1

「user?1」など、エンコードが必要な文字を含めることができるユーザー名に基づく文字列 ID パラメーターを使用するアクションがあります。

ActionLink()リンクを生成するために使用し、エンコードせずに文字列を渡すと、次のようなリンクが生成されます: http:\\localhost\controller\action\user?1、アクションは ID として "user" を渡されます。

UrlEncode()渡す前に文字列を渡すとActionLink、生成されるリンクは次のhttp:\\localhost\controller\action\user%253f1ようになります。ActionLink が「%」文字をエンコードするためです。これは見た目が悪いだけでなく、リンクをたどると HTTP エラー 400 - Bad Request が生成されますが、その原因はまだ突き止めていません。

次のような URL を生成する方法はありますhttp:\\localhost\controller\action\user%3f1か?

4

3 に答える 3

0

を削除してはどうですか?または、ダッシュ (-) やアンダースコア (_) などの別のものに置き換えますか?

于 2009-01-30T00:19:42.197 に答える
0

Global.asax.cs ファイルを確認する必要があります。

便宜上、別のルートを追加します。この場合は ff. うまくいくかもしれません:

        routes.MapRoute(
             null,                            
             "{controller}/{action}/user/{id}",
             new { controller = "Home", action = "Index" }
         );

これは、ユーザーごとにアクションを分離するために必要なことだと思いますが、この目的には Cookie を使用することをお勧めします。

PS: ルーティングは上から下に一致させようとするため、デフォルト ルートの上に配置することを忘れないでください。

于 2010-02-21T09:36:58.737 に答える