Asp.net mvc 3 MVC 3路线图
在我的映射中映射了2条路线 这是为了允许用户键入带有可选参数的url,以便在网站主页中快速加载其城镇,例如: www.mysite.com/manchester www.mysite.com/liverpool 或者,如果只输入了www.mysite.com而没有其他内容,只需转到defaul主页即可 在处理控制器/动作/参数的默认映射到位后,我添加了一个额外的路由,以便传递参数:Asp.net mvc 3 MVC 3路线图,asp.net-mvc-3,routing,Asp.net Mvc 3,Routing,在我的映射中映射了2条路线 这是为了允许用户键入带有可选参数的url,以便在网站主页中快速加载其城镇,例如: www.mysite.com/manchester www.mysite.com/liverpool 或者,如果只输入了www.mysite.com而没有其他内容,只需转到defaul主页即可 在处理控制器/动作/参数的默认映射到位后,我添加了一个额外的路由,以便传递参数: routes.MapRoute( "Default", // Route name "{contr
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }); // Parameter defaults
routes.MapRoute(
"HomePageQuickFind",
"{quickFind}",
new { controller = "Home", action = "Index", quickFind = UrlParameter.Optional });
我不太擅长路由映射,因为我正在努力理解它,我的问题是这是一种糟糕的方法,我的原因是“贪婪路由”,有没有其他方法来实现我的场景?我认为您需要为每个控制器用一组路由替换默认路由,然后将快速查找路线添加为最后一条路线。这将允许任何不匹配的路由通过快速查找路由。试着这样做:
// Routes for standard controllers
routes.MapRoute(
"Home",
"home/{action}/{id}",
new { controller = "home", action = "index", id = UrlParameter.Optional }
);
routes.MapRoute(
"Map",
"map/{action}/{id}",
new { controller = "map", action = "index", id = UrlParameter.Optional }
);
routes.MapRoute(
"Default",
"users/{action}/{id}",
new { controller = "users", action = "index", id = UrlParameter.Optional }
);
// Route for www.mysite.com/cityname
routes.MapRoute(
"QuickFind",
"{quickFind}",
new { controller = "home", action = "index", quickFind = UrlParameter.Optional }
);