代码之家  ›  专栏  ›  技术社区  ›  Daniel

我应该何时在ASP.NET MVC中创建新的控制器类?

  •  7
  • Daniel  · 技术社区  · 16 年前

    我正在学习MVC,在决定什么时候应该创建一个新的控制器时遇到了困难,而不是仅仅添加一个与现有控制器相关联的操作和视图。一方面,单一的责任似乎意味着一个控制者应该被限制在一些行动上。不过,当我尝试这个方法时,类的数量会成倍地增长(每个类的模型、视图和控制器),直到我想知道我是否会走极端。

    例如,默认的AccountController具有登录、更改密码和注册操作。我倾向于创建一个LoginController、PasswordController和ProfileController,以及相关的模型类。所以如果有一个班,就有3-6个班。

    这方面有什么好的经验法则吗?

    3 回复  |  直到 16 年前
        1
  •  6
  •   Chris Missal    16 年前

    我认为你需要务实。我正在做一个由StatController组成的项目。行动的数量不断增加(Randomstat、Mostpopular、MostView、MostVoted等),清单不断增加。这些操作很容易满足,因为StatController的依赖关系不会改变。我用一个IOC来满足我的控制器的需要,当我开始看到我的控制器需要新对象的引用时,这是一个信号,表明它们需要被分离。

    如果您的LoginController、PasswordController和ProfileController都依赖于相同的对象,为什么要将它们分开?

        2
  •  9
  •   Soviut    16 年前

    您应该为您操作的每种模型类型指定一个控制器。控制器充当作用于这些模型的操作的集合。这通常是经验法则,但有时控制器的作用域会超越单个模型。

    AccountController处理与身份验证相关的所有事情。这是一个超越单个模型范围的示例,通常包括身份验证。认证的关键部分是什么?检索用户、更改密码等。

        3
  •  0
  •   Todd Smith Brandon    16 年前

    我目前的会计主管有12种方法,对我来说是完全可以管理的。

    我有另一个控制器,它目前有34个方法,但是这些方法都绑定到一个视图,每个方法最多有8-10行代码(检查所需参数,更新模型,并根据需要重定向)。

    它们的关键是封装 业务逻辑 在一个完全独立的模块中。这将使您的操作处理程序保持非常轻的重量,并且可以使测试业务逻辑更加容易。