Bee*_*eep 66 architecture model-view-controller asp.net-mvc
我们正在ASP.NET MVC中构建一个相当大的HR应用程序,到目前为止我们的控制器变得非常庞大.例如,我们有一个Employee控制器,包括所有员工视图(个人信息,员工扣除,家属等).这些视图中的每一个都可能有多个动作或子视图(例如CRUD).每个动作都相对较小,但控制器可能有许多功能.
是否存在拆分控制器的最佳实践?而不是拥有带有几十个视图的Employee控制器,对每个子类型(即EmployeePersonalInfoController,EmployeeDeductionController,EmployeeDependentController)是否更好一个控制器?
最后,它甚至重要吗?
更新澄清
我最初担心的是CRUD的行为.例如,让我们考虑创建和删除...
EmployeeController中的当前操作:
CreateEmployee()
DeleteEmployee()
CreateEmployeeDeduction()
DeleteEmployeeDeduction()
CreateDependent()
DeleteDependent()
etc.
Run Code Online (Sandbox Code Playgroud)
如果控制器被拆分:
EmployeeController
Create()
Delete()
EmployeeDeductionController
Create()
Delete()
EmployeeDependentController
Create()
Delete()
EmployeeBenefitController
Create()
Delete()
etc.
Run Code Online (Sandbox Code Playgroud)
在第一种情况下,我们的~100个屏幕被分成8-10个大型控制器.在第二个,我可能有~50个控制器.
Sam*_*sel 28
部分类允许您跨多个文件传播您的类.这样,您可以将控制器的相关区域分组到单独的文件中,但它们仍然是同一控制器的一部分.例如
EmployeeDeductionController.cs
public partial class EmployeeController
{
public ActionResult Deduct()
{
}
// etc
}
Run Code Online (Sandbox Code Playgroud)
EmployeeBenefitController.cs
public partial class EmployeeController
{
public ActionResult GiveBenefit()
{
}
// etc
}
Run Code Online (Sandbox Code Playgroud)
gri*_*egs 14
在我看来,如果你将控制器中的代码保留下来,那么这并不重要.
你的大部分代码都会在某个商业层发生吗?如果是这种情况,那么你在控制器中真正做的就是将数据返回到视图中.应该如此.
不确定我是否是将控制器分成子类型的粉丝.虽然你应该保持关注的分离,我认为亚型有点太过分了.
你可以看看这篇文章,看看它是否有帮助. 相同的视图不同的路径
这可能是比使用您建议的子类型方法更好的解决方案.
Mat*_*s F 10
我不想要50个控制器.现在我的应用程序中有16个,感觉还可以.如果您有50个控制器,您还将拥有50个顶级文件夹以供查看.很难找到您需要处理的视图和控制器.正如其他人所提到的那样,行动通常很短,而且在你的控制器中有一些行动并不是那么糟糕.
我尝试按系统部分安装1个控制器.我通过采用我的数据库模式并围绕属于一起的表绘制一条线来定义系统部件.
归档时间: |
|
查看次数: |
20664 次 |
最近记录: |