如何在MVC3中选择路由

时间:2012-01-09 07:02:27

标签: asp.net-mvc asp.net-mvc-3 razor asp.net-mvc-routing

我有三条路线的global.ascx

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");



        routes.MapRoute(
           "TestRoute",
           "{id}",
           new { controller = "Product", action = "Index3", id = UrlParameter.Optional },
           new { id = @"\d+" } //one or more digits only, no alphabetical characters
       );

        routes.MapRoute(
           "TestCatalogRoute",
           "{id}",
           new { controller = "Home", action = "Index", id = UrlParameter.Optional }
       );

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "RsvpForm", id = UrlParameter.Optional } // Parameter defaults
            //new { controller = "Product", action = "Index2", id = UrlParameter.Optional } // Parameter defaults
        );


    }

当我输入url:

http://mydomain.com/

它使用“TestCatalogRoute”路线,但我想要“默认”路线T.T

如何:

  • 使用网址:http://mydomain.com它使用“默认”路由
  • 使用网址:http://mydomain.com/1它使用“TestRoute”路线(已经完成!)
  • 使用网址:http://mydomain.com/abc它使用“TestCatalogRoute”路由

3 个答案:

答案 0 :(得分:4)

删除id = UrlParameter.Optional的{​​{1}},然后

答案 1 :(得分:3)

更改路线的顺序。 routehandler将验证每条路线,首先匹配的路线将被选中。所以,如果你把第二个放在最后,你应该没问题?

答案 2 :(得分:1)

我建议使用路由调试器来调试易于使用的路由。

http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx