将URL作为get参数传递?

时间:2008-12-09 13:25:58

标签: asp.net-mvc

我正在尝试将u url作为参数传递给get方法。 我定义了一个接受{* url}参数的路由,所以我可以发送“/”字符而不分隔我的参数。 只要url中有一个“:”(例如http:或localhost:3857),该方法永远不会被命中。

Html.ActionLink方法会转义它的参数本身,但它似乎没有转义':'。我无法手动转义它,因为转义字符会被同样的Html.Actionlink方法转义。

任何想法?

3 个答案:

答案 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'替换回':'