这是关于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个参数。
请建议。
答案 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