ASPNET MVC - 什么进入模型?

时间:2016-11-18 11:45:46

标签: asp.net-mvc model-view-controller

我注意到一些模式,在某些MVC应用程序中,我继承了以前的开发人员。定义模型时,包含选择项和复选框项的所有信息都将在模型中传递。

public class MyModel
{
   int MyEntityField1 {get;set;}
   string MyEntityField2 {get;set;}
   public selectList SelectItens1 {get;set;}
   public selectList SelectItens2 {get;set;}
}
...
MyModelInstance.SelectItens1  = new selectlist(...
MyModelInstance.SelectItens2  = new selectlist(...
return view (MyModelInstance);

SelectItens1和SelectItens2的信息是单向的。如上操作而不是使用ViewBag将Select Items传递给视图有什么好处?

public class MyModel
{
   int MyEntityField1 {get;set;}
   string MyEntityField2 {get;set;}
}
...
Viewbag.SelectItems1 = new SelectList ( ...
Viewbag.SelectItems2 = new SelectList ( ...
return view (MyModelInstance);

我认为它只会使模型变胖而无法获得任何收益。

请告知。

2 个答案:

答案 0 :(得分:1)

这两种方法都很好,它只是一个开发者偏好

第一种方法: 在模型中使用SelectListItem没有任何害处,而且它可以让您清楚地了解UI中的字段必须是什么。因此,查看模型可以确认UI需要呈现下拉列表控制示例中的2个属性。

第二种方法:如果此模型仅在一个或最小页面中使用,则Viewbag应该没问题。同样,这可能意味着开发人员必须了解UI必须呈现的控件。

因此,这些方法纯粹是开发人员的选择,而且我看不到其中任何一项的主要性能改进。

我个人使用第一种方法,因为它更干净,并使控制器代码更少。

答案 1 :(得分:0)

一般来说,我同意将模型保持在最低限度。

然而,使用Microsoft ASPNET MVC模式,您希望保持控制器清洁,Microsoft建议的方法是增加模型,而不是控制器!

  

"一般来说,你应该争取胖模型和瘦控制器。   您的控制器方法应该只包含几行代码。如果一个   控制器动作太胖了,那么你应该考虑移动   逻辑输出到Models文件夹中的新类。"

https://www.asp.net/mvc/overview/older-versions-1/overview/understanding-models-views-and-controllers-cs

相关问题