我注意到一些模式,在某些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);
我认为它只会使模型变胖而无法获得任何收益。
请告知。
答案 0 :(得分:1)
这两种方法都很好,它只是一个开发者偏好
第一种方法:
在模型中使用SelectListItem
没有任何害处,而且它可以让您清楚地了解UI中的字段必须是什么。因此,查看模型可以确认UI需要呈现下拉列表控制示例中的2个属性。
第二种方法:如果此模型仅在一个或最小页面中使用,则Viewbag
应该没问题。同样,这可能意味着开发人员必须了解UI必须呈现的控件。
因此,这些方法纯粹是开发人员的选择,而且我看不到其中任何一项的主要性能改进。
我个人使用第一种方法,因为它更干净,并使控制器代码更少。
答案 1 :(得分:0)
一般来说,我同意将模型保持在最低限度。
然而,使用Microsoft ASPNET MVC模式,您希望保持控制器清洁,Microsoft建议的方法是增加模型,而不是控制器!
"一般来说,你应该争取胖模型和瘦控制器。 您的控制器方法应该只包含几行代码。如果一个 控制器动作太胖了,那么你应该考虑移动 逻辑输出到Models文件夹中的新类。"