编辑:对不起,我解释得很糟糕。基本上,在下面的例子中,我希望“this-is-handling-by-content-controller”是“id”,所以我可以在ContentController中将其作为操作参数来抓取它,但我想通过根的网站,例如mysite.com/this-is-not-passed-to-homecontroller。C#MVC 3根路由似乎没有工作
我想创建一个根路由,将去一个单独的控制器(而不是家)。
我跟着“RootController”示例发布在其他地方,实现IRouteConstraint,但它似乎不工作,我已经浪费了几个小时在这!
基本上,我有一个LoginController,一个HomeController和一个ContentController。
我希望能够通过去http://mysite/查看HomeController/Index。我希望能够通过去http://mysite/Login查看LoginController/Index。但是..我想要ContentController /索引被调用,如果任何其他结果发生,例如:http:/ mysite/this-is-by-content-controller
有没有一种优雅的方式来做到这一点?
这是我最后一次尝试。我已经剪切/粘贴/复制/划伤我的头这么多次的有点乱:
routes.MapRoute(
"ContentPages",
"{action}",
new { Area = "", controller = "ContentPages", action = "View", id = UrlParameter.Optional },
new RootActionConstraint()
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { Area = "", controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new string[] { "Website.Controllers" }
);
任何帮助,不胜感激!
化学
这可能会涵盖你在找什么。处理不匹配的路线并不是真正的路线引擎工作。 http://stackoverflow.com/questions/317005/default-route-for-all-extreme-situations/317023#317023 – Brettski 2011-02-14 03:35:44