3

ベンダーのリンクと、各ベンダーの詳細ページへのリンクを表示するビューがあります

@foreach (var vendor in Model.Vendors)
{
    <li>
        <a href="/Vendors/@(vendor.Name)">@vendor.Name</a>
    </li>
}

特定のベンダーの名前は「ABC Sales & Services」なので、詳細ページへのリンクは/Vendors/ABC Sales & Servicesです。その URL に移動すると、次のエラーが表示されます。

潜在的に危険な Request.Path 値がクライアント (&) から検出されました。

これを回避する方法はありますか?

4

4 に答える 4

4

web.configこれをに追加httpRuntime:

<httpRuntime requestPathInvalidChars="&lt;,&gt;,*,%,:,\,?" />

デフォルトでは、そのリストには が含まれてい&amp;ます。単に削除するだけです

于 2013-01-26T01:13:38.977 に答える
1

名前ではなく、実際にはベンダーの ID を使用する必要があります (できれば、データベースには主キー (数値/GUID のいずれか) があります)。

于 2013-01-26T01:13:39.343 に答える
1

ベンダー名を UrlEncode する必要があります。

<a href="/Vendors/@Url.Encode(vendor.Name)">@vendor.Name</a>

ちなみに、これは、Url.ActionまたはHtml.Actionメソッドを使用してアンカー タグを作成するときに、ユーザーに代わって行われます。

于 2013-01-26T01:18:03.847 に答える
0

使用できます

<a href="@Url.Action("/Vendors/" + @vendor.Name)">@vendor.Name</a>
于 2013-01-26T01:31:06.717 に答える