【问题标题】:When should I create new Controller class in Asp.net MVC (Design Question)?我应该什么时候在 Asp.net MVC 中创建新的 Controller 类(设计问题)?
【发布时间】:2010-01-17 03:31:58
【问题描述】:

在我问这个问题之前,这里是我对MVC模式控制器的理解。

  1. 控制器是应用层(在 DDD 中)
  2. 它控制应用程序流。
  3. 保持纤薄
  4. 它控制工作单元(也称为事务)

我的问题是“我应该什么时候创建新的 Controller 类?”。我以NerdDinner 中的 DinnerController 为例。

  • 晚餐模块的控制器吗? (是模块吗?IMO,模块太小了)
  • 如果是,我应该为每个模块创建控制器吗?控制器会变胖吗?
  • 如果不是,我应该什么时候创建新控制器?

我个人更喜欢为每个用例创建控制器类。例如 CreateDinnerControllerlr、EditDinnerController、ListDinnerController、SearchDinnerController 等。但是 IMO 也有一些缺点,例如

  1. 有时,它违反了 DRY 原则(它可能需要在两个地方创建相同的 ViewModel,例如 Create 和 Edit 可能有 DinnerViewModel)
  2. 需要明确定义路由? (我仍然更喜欢 /Dinner/Create/Dinner/Edit/1 这样的路线)

提前致谢。

【问题讨论】:

    标签: asp.net-mvc design-patterns


    【解决方案1】:

    通常的做法是创建一个与每个视图关联的控制器。当应用程序使用 Restful URL 设计时,这通常映射到索引、新建、编辑和删除操作。然后,您可以映射一个方法来处理每个操作。

    http://example.com/examples/1/edit - maps to edit method on ExamplesController
    http://example.com/examples/1/new - maps to new method on ExamplesController
    http://example.com/examples - maps to index method on ExamplesController
    http://example.com/examples/1/delete - maps to delete method on ExamplesController
    
    http://example.com/users/1/edit - maps to edit method on UsersController
    http://example.com/users/1/new - maps to new method on UsersController
    http://example.com/users - maps to index method on UsersController
    http://example.com/users/1/delete - maps to delete method on UsersController
    

    【讨论】:

      【解决方案2】:

      在使用 ASP.net MVC 和 rails 之后,我认为 Controller 应该创建每个 Resource(在 REST 样式的应用程序中)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-11
        • 2013-06-18
        • 1970-01-01
        • 1970-01-01
        • 2015-07-20
        • 1970-01-01
        • 2012-11-13
        • 1970-01-01
        相关资源
        最近更新 更多