【发布时间】:2011-02-14 03:13:56
【问题描述】:
编辑:对不起,我解释得很糟糕。基本上,在下面的示例中,我希望“this-is-handled-by-content-controller”成为“id”,因此我可以在 ContentController 中将其作为操作参数获取,但我想通过根访问它网站的名称,例如 mysite.com/this-is-not-passed-to-homecontroller。
我正在尝试创建一个将转到单独的控制器(而不是主控制器)的根路由。
我已经按照在其他地方发布的实现 IRouteConstraint 的“RootController”示例进行了操作,但它似乎不起作用,我已经在这上面浪费了几个小时!
基本上,我有一个 LoginController、一个 HomeController 和一个 ContentController。
我希望能够通过转到http://mysite/ 来查看 HomeController/Index。我希望能够通过转到http://mysite/Login 来查看 LoginController/Index。但是.. 如果发生任何其他结果,我希望调用 ContentController/Index,例如:http:/mysite/this-is-handled-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" }
);
非常感谢任何帮助!
化学
【问题讨论】:
-
这可能涵盖您正在寻找的内容。处理没有匹配的路线并不是真正的路线引擎工作。 stackoverflow.com/questions/317005/…
标签: c# asp.net-mvc model-view-controller asp.net-mvc-3