无法在URL中编码斜杠

时间:2011-09-25 23:34:23

标签: .net asp.net-mvc iis asp.net-mvc-routing urlencode

http://myhost/MyController/DoSomething/Anything%252fAnything是一个错误的请求

http://myhost/MyController/DoSomething/Anything%2fAnythinghttp://myhost/MyController/DoSomething/Anything/Anything

相同

什么网址将字符串"Anything/Anything"发送到我的控制器?

如何让Html.ActionLink生成该网址?

编辑:它应该能够处理"Anything/Anything/Anything/Anything....../Anything"

我正在使用MVC 3。

2 个答案:

答案 0 :(得分:2)

如果要定义定义可变长度路径的路径,可以使用以下定义:

routes.MapRoute("MyRoute", "{controller}/{action}/{id}/{*catchall}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional });

将其放在global.asax.cs

中的其他路线定义之前

答案 1 :(得分:0)

路由机器想要处理斜杠。 因此添加路由规则,例如

url = [controller]/[action]/[id1]/[id2]

请参阅post

或使用

等网址
http://myhost/MyController/DoSomething/Anything?id2=Anything

可以作为默认值进行处理 - 但在这种情况下,其他路由的规则必须明确地与您的控制器/操作名称不匹配。否则,将适用先前的规则。

也可能整个网址可从系统变量中获取。你的控制器是否被调用?