MVC 3路由映射

时间:2011-12-21 23:15:23

标签: asp.net-mvc-3 routing

我在映射中映射了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 });

我不太了解路线映射,因为我正在努力理解它,我的问题是这是一个糟糕的方法,我的原因是“贪婪的路由”,还有另一种实现我的方案的方法吗?

1 个答案:

答案 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 }
);