2

我指定了以下路线:

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]

由于在myRoute2for [/public]url 中,我为控制器和操作指定了默认值,但这似乎不起作用。有任何想法吗 ?

谢谢

4

3 回答 3

3
routes.MapRoute(
            "myRoute1", 
            "public/{controller}/{action}/{id}", 
            new { controller = "PublicHome", action = "Index", id = UrlParameter.Optional });

安装RouteDebugger。这将告诉您对于给定的 url,您的路线是否会被命中。

如果您匹配多条路线,则将处理第一个路线。RouteDebugger将显示所有匹配项。您可以适当地重新排序它们。

如果 ROuteDebugger 在 404 页面上不起作用,请打开自定义错误。例子:

<customErrors mode="On" defaultRedirect="err/index">
  <error statusCode="404" redirect="err/notfound" />
</customErrors>`
于 2012-07-25T09:26:35.100 回答
2

更改路由声明的顺序,您的第一个(默认)路由匹配 url 并搜索 PublicController。

于 2012-07-25T10:22:25.787 回答
0

您不应该在您的路线中将大括号放在 public 周围,因为它不是参数。

于 2012-07-25T09:26:14.287 回答