我已指定以下路线:
routes.MapRoute(
"myRoute1",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional });
routes.MapRoute(
"myRoute2",
"public/{controller}/{action}/{id}",
new { controller = "PublicHome", action = "Index", id = UrlParameter.Optional });
并希望以下网址正常工作
[http://localhost:58658/public]
因为在myRoute2
[/public]
url中,我指定了控制器和操作的默认值,但这似乎不起作用。有什么想法吗?
谢谢
答案 0 :(得分:3)
routes.MapRoute(
"myRoute1",
"public/{controller}/{action}/{id}",
new { controller = "PublicHome", action = "Index", id = UrlParameter.Optional });
安装RouteDebugger。这将告诉您是否会针对给定网址命中您的路线。
如果您要匹配多条路线,则会处理第一条路线。 RouteDebugger会向您显示所有匹配项。你应该对它们进行适当的重新排序。
如果ROuteDebugger无法在404页面上运行,请启用自定义错误。例如:
<customErrors mode="On" defaultRedirect="err/index">
<error statusCode="404" redirect="err/notfound" />
</customErrors>`
答案 1 :(得分:2)
更改路由声明的顺序,第一个(默认)路由与url匹配,并搜索PublicController。
答案 2 :(得分:0)
你不应该在你的路线中将花括号放在公共场所,因为它不是参数。