我在映射中映射了2条路线...
这是为了允许用户输入带有可选参数的网址,以便在网站的主页中快速加载他们的城镇,例如:
www.mysite.com/manchester www.mysite.com/liverpool
或者只要输入www.mysite.com就可以直接进入默认主页。
使用默认映射来处理控制器/操作/参数,我添加了一个额外的路由,以便参数传递:
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 });
我不太了解路线映射,因为我正在努力理解它,我的问题是这是一个糟糕的方法,我的原因是“贪婪的路由”,还有另一种实现我的方案的方法吗?
答案 0 :(得分:1)
我认为您需要为每个控制器替换一组路由的默认路由,然后将快速查找路由添加为最后一条路由。这应该允许任何不匹配的路线通过快速查找路线。尝试这样的事情:
// 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 }
);