2016-11-18 1 views
0

Ich habe ein Muster bemerkt, das ich in einigen MVC-Anwendungen von einem früheren Entwickler geerbt habe. Beim Definieren der Modelle werden alle Informationen, die die Elemente für Selects und Check-Boxen enthalten, im Modell übergeben.ASPNET MVC - Was geht in das Modell?

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); 

die Informationen auf SelectItens1 und SelectItens2 ist eine Möglichkeit. Was ist der Vorteil, wenn Sie wie oben vorgehen, anstatt den ViewBag zu verwenden, um Select Items an die Ansicht zu übergeben?

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

Ich denke, es macht nur das Modell Fett für keinen Gewinn überhaupt.

Bitte beraten.

Antwort

0

Generell würde ich zustimmen, dass Modelle auf ein Minimum reduziert werden sollten.

Allerdings mit Microsoft ASPNET MVC Muster möchten Sie Ihren Controller sauber und Microsoft sie empfohlen Ansatz ist zu mästen Ihr Modell und nicht Ihr Controller!

„In der Regel sollten Sie für das Fett Modelle und dünn Controller streben. Ihre Controller-Methoden nur ein paar Zeilen Code enthalten sollen. Wenn eine Controller-Aktion wird zu dick, dann sollten Sie die Logik in Erwägung ziehen zu einer neuen Klasse im Ordner "Models". "

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

1

Beide Ansätze sind in Ordnung, seine nur ein Entwickler Präferenz

erste Ansatz: Es schadet nicht, den SelectListItem im Modell in mit, darüber hinaus gibt es Ihnen ein Ein klares Bild davon, was die Felder in Ihrer Benutzeroberfläche sein müssen. Wenn Sie sich das Modell ansehen, können Sie bestätigen, dass die Benutzeroberfläche ein Dropdown-Listen-Steuerelement für die 2 Eigenschaften in Ihrem Beispiel darstellen muss.

Zweite Methode: Wenn dieses Modell nur in einer oder in nur wenigen Seiten verwendet wird, sollte Viewbag in Ordnung sein. Dies kann wiederum bedeuten, dass der Entwickler wissen muss, welches Steuerelement die Benutzeroberfläche rendern muss.

Also die Ansätze sind rein Entwickler Wahl und ich sehe keine größeren Leistungsverbesserungen von einem über den anderen.

Ich persönlich benutze den ersten Ansatz, wie es sauberer und hält den Controller-Code weniger.