在asp.net MVC2中设置具有多个接口的项目的最佳实践是什么?我正在开始一个项目,我们需要一个典型的安排,如:
example.com/ - 最终用户界面
example.com/Admin/ - 网站管理
该网站将足够参与,只需在HomeController中拥有所有用户逻辑,并且AdminController中的所有管理逻辑都不是真正的选项。我已经阅读了有关使用多个Route定义的内容,但以下内容似乎无法正常工作:
routes.MapRoute(
"Admin", // Route name
"Admin/{controller}/{action}/{id}", // URL with parameters
new { controller = "Admin", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
它会导致主页上的所有链接指向example.com/Admin/local-part而不是example.com/local-part。
我想避免为每个管理控制器指定不同的MapRoute(每次从映射中省略{controller})。
我还阅读了关于在项目中设置不同区域的内容,但这似乎是太涉及到该项目的范围。
最后,我还读到你可以对MapRoutes设置约束,但是那部分的文档似乎让我感到困惑。有什么明显的东西我不见了吗?如果不这样做,我应该记住asp.net结构的最佳实践吗?
答案 0 :(得分:2)
听起来,Area已经准备好了你想做的事情。设置area实际上并不是所有涉及的,基本上你只需要注册它。默认情况下,区域路由将匹配global.asax中的默认值,例外是url中的额外“\ area”slug。我很确定几个月前我在一个项目上设置它时只花了几分钟。
如果管理控制器的复杂程度足以超出单个控制器的范围,那么表明可能需要保证区域。