2010-11-20 86 views
0

在asp.net MVC2中使用多接口设置项目的最佳实践是什么?我开始一个项目,我们需要像一个典型的安排:Asp.net MVC2 URL结构 - 最佳实践

example.com/ - 最终用户界面

example.com/Admin/ - 现场管理

该网站将足够的参与只需拥有HomeController中的所有用户逻辑和AdminController中的所有管理逻辑都不是真正的选择。我读过有关使用多路由定义,但下面似乎并没有正常工作:

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结构的最佳实践?

回答

2

这听起来像Area's已经做好了你想做的事情。设置一个area并不是真正涉及到的,基本上你只需要注册它。默认情况下,区域路由将匹配global.asax中的默认值,例外是url中额外的“\ area”slug。我相当肯定,几个月前,当我在一个项目上进行设置时,只花了几分钟。

如果您的管理员控制器足够复杂,超出单个控制器的范围,则表明可能需要授权一个区域。