我应该何时在Asp.net MVC(设计问题)中创建新的Controller类?

时间:2010-01-17 03:31:59

标签: asp.net-mvc design-patterns

在我提出问题之前,这是我对MVC模式中Controller的理解。

  1. 控制器是应用层(在DDD中)
  2. 它控制应用程序流程。
  3. 保持薄
  4. 它控制工作单位(a.k.a交易)
  5. 我的问题是“我应该何时创建新的Controller类?”。我将以NerdDinner中的DinnerController为例。

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

    我个人更喜欢按用例创建Controller类。例如,CreateDinnerControllelr,EditDinnerController,ListDinnerController,SearchDinnerController等。但IMO有一些缺点,如

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

2 个答案:

答案 0 :(得分:2)

通常的做法是创建与每个视图关联的控制器。当应用程序使用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

答案 1 :(得分:0)

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