我们正在用ASP.NET MVC构建一个相当大的HR应用程序,到目前为止,我们的控制器正在变得相当大。例如,我们有一个员工控制器,并且包括所有员工视图(个人信息、员工扣减、受抚养人等等)。每个视图都可能有多个操作或子视图(例如CRUD)。每个动作都比较小,但是控制器可能有几十个函数。
是否有分割控制器的最佳实践?与其拥有一个具有数十个视图的员工控制器,不如为每个子类型(即EmployeePersonalInfoController、EmployeeDeductionController、EmployeeDependentController)设置一个控制器好吗?
最后,这有关系吗?
最新澄清
我最初关心的是CRUD的行为。例如,让我们考虑创建和删除..。
EmployeeController中的当前操作
CreateEmployee()
DeleteEmployee()
CreateEmployeeDeduction()
DeleteEmployeeDeduction()
CreateDependent()
DeleteDependent()
etc.
如果控制员被分开:
EmployeeController
Create()
Delete()
EmployeeDeductionController
Create()
Delete()
EmployeeDependentController
Create()
Delete()
EmployeeBenefitController
Create()
Delete()
etc.
在第一个场景中,我们的大约100个屏幕被分割成8-10个大型控制器。在第二种情况下,我可能会有50个控制器。
发布于 2009-07-29 03:33:50
在我看来,如果您将代码保持在控制器中,那么这并不重要。
您的大部分代码将发生在某个业务层,对吗?如果是这样的话,那么在控制器中真正要做的就是将数据返回到视图。它应该是的。
不太确定我是否喜欢把控制器划分成子类型。虽然你应该保持关注点的分离,但我认为子类型有点过头了。
你可以看看这篇文章,看看它是否有帮助。相同视点不同路径
这可能是比使用您建议的子类型方法更好的解决方案。
发布于 2009-07-29 08:16:19
部分类允许您将类分散到多个文件中。这样,您就可以将控制器的相关区域分组到单独的文件中,但它们仍然是同一个控制器的一部分。例如:
EmployeeDeductionController.cs
public partial class EmployeeController
{
public ActionResult Deduct()
{
}
// etc
}
EmployeeBenefitController.cs
public partial class EmployeeController
{
public ActionResult GiveBenefit()
{
}
// etc
}
发布于 2009-07-29 08:29:05
我不想有50个控制器。现在我的申请有16份,感觉还不错。如果您有50个控制器,您也将有50个图层文件夹的视图。很难找到您需要处理的视图和控制器。正如其他人提到的,操作通常是短的,在控制器中有几个操作并不坏。
我试着按系统部分设置一个控制器。我定义系统部件的方法是采用我的数据库架构,并在属于一起的表周围画一条线。
https://stackoverflow.com/questions/1197908
复制相似问题