将带有&符号的参数传递给控制器​​操作方法

时间:2013-01-26 01:07:34

标签: c# asp.net asp.net-mvc razor

我有一个显示供应商链接的视图,其中包含指向每个供应商详细信息页面的链接

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

一个特定的供应商名为“ABC销售与服务”,因此指向其详细信息页面的链接为/Vendors/ABC Sales & Services。当我导航到该网址时,我收到此错误:

  

从客户端(&amp;)检测到潜在危险的Request.Path值。

有没有办法解决这个问题?

4 个答案:

答案 0 :(得分:3)

将其添加到web.config的{​​{1}}:

httpRuntime

默认情况下,该列表包含<httpRuntime requestPathInvalidChars="&lt;,&gt;,*,%,:,\,?" /> ,您只需删除它

答案 1 :(得分:1)

你应该真正利用供应商的ID(希望你的数据库上有一个主键 - 数字/ guid),而不是名字。

答案 2 :(得分:1)

您应该对供应商名称进行UrlEncode:

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

顺便说一下,当您使用Url.ActionHtml.Action方法构建锚标记时,代表您完成此操作

答案 3 :(得分:0)

您可以使用

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