Asp.net MVC - 路由中的默认值

时间:2012-07-25 09:23:56

标签: c# asp.net asp.net-mvc asp.net-mvc-routing

我已指定以下路线:

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中,我指定了控制器和操作的默认值,但这似乎不起作用。有什么想法吗?

谢谢

3 个答案:

答案 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)

你不应该在你的路线中将花括号放在公共场所,因为它不是参数。