2016-11-18 58 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必須呈現的控件。

所以這些方法純粹是開發人員的選擇,我沒有看到任何主要的性能改進。

我個人使用第一種方法,因爲它更乾淨並且控制器代碼更少。