0

asp.net mvc 4 を使用して Web アプリケーションを構築しています。

アクションへの URL を作成するには、次のように ActionLink を使用しています。

@Html.ActionLink("Details", "Details", new { id=item.PrimaryKey })

item.PrimaryKey文字列にすることができるため、ドット、スラッシュ、またはその他の特殊文字を含めることができます。ドットまたはスラッシュが含まれている場合、404 error. ¿ どうすれば回避できますか?

ここで解決策を見つけました

http://mrpmorris.blogspot.mx/2012/08/asp-mvc-encoding-route-values.html

しかし、それは複雑です

これに対するより簡単な解決策はありますか?

4

2 に答える 2

2

ここで解決策を見つけました

http://mrpmorris.blogspot.mx/2012/08/asp-mvc-encoding-route-values.html

しかし、それは複雑です

それは、解決しようとしている問題が複雑だからです。following blog postこれを行う上でのさまざまな課題について説明している Scott Hanselman の をご覧ください。彼の結論を要約します。

リクエスト パスでクレイジーなものを取得するためのこのすべての努力の後、値をクエリ文字列の一部として保持するだけのほうが簡単で、クリーンで、より柔軟で、より柔軟であることに言及する価値があります (この記事の最初の WAY を覚えていますか?)。安全。

したがって、基本的に、ID に任意の文字を含めることができる場合は、Uri パスの一部ではなく、クエリ文字列パラメーターとして渡す必要があります。

ただし、ID を Uri パスの一部として使用したいと主張している場合は、StackOverflow の方法に触発される可能性があります。ブラウザのアドレスバーを見てください。これが表示されます:

https://stackoverflow.com/questions/15697189/special-characters-in-actionlink-asp-mvc

URL に 2 つのトークン (実際の ID と SEO のフレンドリ名) が含まれていることに注意してください。Jeff Atwood は、sample filter functionSEO フレンドリーなスラッグを生成するために使用していることを示しました。スラッグはSEO目的のためだけのものです。必要なものに置き換えて、同じ結果を得ることができます。

https://stackoverflow.com/questions/15697189/foo-bar
于 2013-03-29T09:37:52.117 に答える
0

Server.UrlEncode()それをエンコードするために使用できます:

@Html.ActionLink("Details", "Details", new { id=Server.UrlEncode(item.PrimaryKey) })

例を含む msdn への参照

于 2013-03-29T05:15:55.320 に答える