我有三条路线的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”路由答案 0 :(得分:4)
删除id = UrlParameter.Optional
的{{1}},然后
答案 1 :(得分:3)
更改路线的顺序。 routehandler将验证每条路线,首先匹配的路线将被选中。所以,如果你把第二个放在最后,你应该没问题?
答案 2 :(得分:1)
我建议使用路由调试器来调试易于使用的路由。
http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx