MVC3何时使用区域?

时间:2011-09-01 14:12:01

标签: asp.net asp.net-mvc-3 asp.net-mvc-areas

我正在开发一个敏捷的MVC3项目,它开始变得相当大,特别是我的管理部分,用户可以设置很多配置等。这是我的第一个MVC3项目,所以我只是使用区域时有意义吗?

在您决定将其分解为某个区域并为各个管理操作创建控制器之前,像管理这样的特定部分的控制器应该有多大?

此外,在使用区域时,我是否应该重构使用区域来处理所有区域,或者仅仅针对需要区域的区域?

3 个答案:

答案 0 :(得分:20)

关于如何组织这一点有很多意见,因为有开发人员,但我的观点如下;

控制器应仅负责与视图进行交互。也就是说,实例化和填充模型对象,从业务对象或数据访问层检索数据,响应来自页面的任何请求(表单提交,AJAX请求,动态资源创建方法/类的接口(如创建CAPTCHA或其他动态)图片))等。如果你坚持这种理念,它们的大小和复杂性决不应超过你的观点。

区域我倾向于使用区域将应用​​程序分解为子应用程序。例如,一个站点可能有一个讨论论坛,产品目录,公司信息,支持数据库等,所有这些都是独立的区域:

/areas/forum/...
/areas/product/...
/areas/company/...
/areas/support/...

然后,在每个区域,你可能有

/areas/support/{views|controllers}
/areas/support/search/
/areas/support/contact/
/areas/support/knowledgebase/

就像在webforms网站中每个文件夹代表网站的不同“区域”一样,区域提供了另一个组织级别,可以让您将相关的控制器,视图等保存在一个公共位置,并且应该在类似的位置使用方式。

答案 1 :(得分:8)

我们使用区域来区分应用程序中值得注意的单独关注点。特别是可能需要对每个区域进行唯一身份验证或布局/样式的单独问题。例如,我正在开发一个具有各种“模块”的应用程序。每个模块都是一个mvc区域,每个模块都是一个设置部分,也是一个mvc区域。该应用程序有三个模块,因此共有六个区域 - 具有六个用户权限。这允许每个模块具有新的“母版页/布局”(外观)和特定的安全级别。

它也有助于分离代码; AreaA中的代码与AreaB中的代码无关,但有时AreaA和AreaB使用项目根目录中的公共代码。

网站的非地区部分包括用户登录,错误页面(404等),进入模块的主要“启动器”区域,异常处理以及其他包含交叉切割的内容任何一个mvc区域。

答案 2 :(得分:0)

当您需要单独控制并重用控制器名称时,它是最实用的。就像你可以用它来管理网站,博客部分等等。