MVC3 Razor URL.Action参数值,带正斜杠。给出错误

时间:2012-03-08 16:22:52

标签: asp.net-mvc asp.net-mvc-3 razor controller

这是关于MVC3 Razor的一个小问题,当我试图调用详细信息或删除Controller的方法时,我有一个像“a / b”这样的字符串ID。将错误视为系统,假设“a / b”为2个参数,但我必须将其传递给一个字符串值参数。

- 编辑

< a href="@Url.Action("Details", "Search", new {id = "a/b"})">Details </a>

我的控制器/方法就像 搜索/详细信息(字符串ID)

我想发送id ='a / b'。但.Net假设它是URL中的2个参数。

请建议。

2 个答案:

答案 0 :(得分:3)

似乎正斜杠不是自动编码的,原因可能是因为即使它们被编码(%2f),当它们到达路由引擎时,它们也被解码回正斜杠。 (由Phil Haack(MVC团队前经理)在this post搜索Robj)。

然而,.NET MVC Routing w/ Url Encoding Problems提出了同样的问题,似乎解决这个问题的唯一方法是将编码的斜杠插入查询字符串中。像这样:

< a href="@Url.Action("Details", "Search")?id=@Url.Encode("a/b")">Details </a>

然后,通过访问:

在您的方法中处理它
Request["id"]

答案 1 :(得分:0)

您应该使用转义网址,以便该参数为a%2Fb