【问题标题】:MVC3 When To Use Areas?MVC3 何时使用区域?
【发布时间】:2011-09-01 14:12:01
【问题描述】:

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

例如,在您决定将其分解为一个区域并为各个管理操作创建控制器之前,用于管理等特定部分的控制器应该有多大?

另外,在使用区域时,我应该将区域用于所有内容,还是仅用于需要区域的部分?

【问题讨论】:

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


    【解决方案1】:

    关于如何组织这个有多少开发者有多少意见,但我的看法如下;

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

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

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

    那么,在每个领域,你可能有

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

    等等

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

    【讨论】:

    • 感谢您的详细解答。这很有帮助,我想我将在下一次迭代中实施领域。
    【解决方案2】:

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

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

    网站的非区域部分包括用户登录、错误页面(404 等)、进入模块的主要“启动器”区域、异常处理以及其他包含的东西任何 mvc 区域。

    【讨论】:

      【解决方案3】:

      当您需要单独控制和重用控制器名称时,它最实用。就像您可以将它用于管理站点、博客部分等一样。

      【讨论】:

        猜你喜欢
        • 2011-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-17
        • 2012-02-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多