不幸的是,我需要接受带有&的路由参数。在里面。我有这个路线定义。 id参数有时会有一个&就像这个X& Y001。
routes.MapRoute(
"AffiliateEdit",
"Admin/EditAffiliate/{*id}",
new { controller = "UserAdministration", action = "EditAffiliate", id = ""}
);
我尝试过以下方式解决这个问题,但是没有一个有效。所有这些都导致浏览器中出现HTTP 400 Bad Request错误。
<a href="/Admin/EditAffiliate/<%= a.CustomerID.Replace("&", "%26") %>">Edit</a>
这给了我<a href="/Admin/EditAffiliate/X%26Y001">Edit</a>
<%= Html.RouteLink("Edit", "AffiliateEdit", new { id = a.CustomerID }) %>
这给了我<a href="/Admin/EditAffiliate/X&Y001">Edit</a>
<%= Html.RouteLink("Edit", "AffiliateEdit", new { id = Url.Encode(a.CustomerID) }) %>
这给了我<a href="/Admin/EditAffiliate/X%2526Y001">Edit</a>
答案 0 :(得分:1)
我能想到的唯一一件事(这是一个“肮脏的”解决方案)就是编码&amp;你自己。例如## 26 ##。 确保检查解码算法只解码&amp; id,而不是碰巧包含## 26 ##的id。例如。
根据数据库大小,更好的解决方案是更改数据库中的违规ID。