我正在尝试将u url作为参数传递给get方法。 我定义了一个接受{* url}参数的路由,所以我可以发送“/”字符而不分隔我的参数。 只要url中有一个“:”(例如http:或localhost:3857),该方法永远不会被命中。
Html.ActionLink方法会转义它的参数本身,但它似乎没有转义':'。我无法手动转义它,因为转义字符会被同样的Html.Actionlink方法转义。
任何想法?
答案 0 :(得分:3)
在传递之前使用EncodeUrl,然后在另一侧解码它。
答案 1 :(得分:1)
我遇到了同样的问题。我最终删除了Html.ActionLink并将其替换为:
<a href="Movies?id=@item.ID">@item.Title</a>
@ item.ID是从netflix api返回的网址,例如http://api.netflix.com/catalog/titles/series/70021357/seasons/70021357。现在我的网址看起来像这样 - /Home/Movies?id=http://api.netflix.com/catalog/titles/series/70021357/seasons/70021357,我只是使用Request.QueryString来获取控制器中的值:
Request.QueryString.Get("id")
可能不理想,但它现在有效。
答案 2 :(得分:0)
这有点像黑客攻击,但您可以将':'替换为'%3A'(这是转义形式),并查看ActionLink对其执行的操作。如果它再次被转义,你必须将两次转义版本替换回服务器上的“:”,否则只需将'%3A'替换回':'