2016-11-18 57 views
0

我注意到在某些MVC应用程序中,我从之前的开发人员继承的模式。定义模型时,所有包含选项和复选框项目的信息都会在模型中传递。ASPNET 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

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

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

“一般来说,你应该努力为脂肪模型和瘦控制器。 你的控制器方法应该包含的代码只有几行。如果 控制器动作变得太胖,那么你应该考虑移动 逻辑模型文件夹中的新课程“。

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

1

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

第一种方法: 有一个在其模型中的SelectListItem没有坏处,而且它给你一个清楚地了解这些字段必须在您的用户界面中,因此查看模型,您可以确认UI需要为您的示例中的2个属性呈现下拉列表控件。

第二种方法:如果该模型仅用于一页或最小页面,则Viewbag应该没问题。这也意味着开发人员必须掌握UI必须呈现的控件。

所以这些方法纯粹是开发人员的选择,我没有看到任何主要的性能改进。

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