2012-03-27 5 views
2

Ich habe eine Design-/Best-Practice-Frage zu MVC3. Ich habe eine "Titelseite" für die Site, die einige zusammenfassende Informationen für nicht verwandte Tabellen aus meinem Modell enthalten kann.ViewModel vs. Teilansichten auf Zusammenfassung/Front Page

Ist es besser, partielle Ansichten für jedes Modell zu erstellen oder ein ViewModel zu erstellen, um alles zusammen zu binden?

Das "Pro" von Partial Views ist, dass es wirklich Interessen trennt, mit dem "con", dass die Teilansichten wahrscheinlich nicht an anderer Stelle auf der Site wiederverwendet werden. Das "Pro" von ViewModels ist, dass es einem einzelnen stark typisierten Objekt ermöglicht wird, auf eine Ansicht angewendet zu werden, wobei der "Con" darin besteht, dass die Daten wirklich nicht verwandt sind und die Bindung künstlich ist.

+0

+ 1 * Ich habe heute früher darüber gesprochen! – Curt

+0

Sie können das Modell mit Html.Partial (viewName, Model) an die PartialView übergeben. Mit PageData ["key"] können Sie Daten aus der anzuzeigenden Ansicht übergeben. Wenn Sie JavaScript verwenden möchten, um HTML in einen Container zu laden, ist es sinnvoller, Ihre Website in Teilansichten aufzuteilen. Es bleibt auch strukturierter und leichter zu lesen. – Silvermind

Antwort

2

Aus Gründen der Übersichtlichkeit und Wartbarkeit würde ich wählen diese

public class SummaryModel 
{ 
    public Patial1Model Partial1 {get;set;} 
    public Patial2Model Partial2 {get;set;} 
    //etc 
} 

Der Hauptvorteil nicht Wiederverwertbarkeit ist (aber wer weiß?), Aber maintanability. Mit diesem Modell ist es sehr einfach, Daten für eine partielle zu ändern oder an anderen Orten wiederzuverwenden.

Zusammenfassende Informationen für nicht verwandte Tabellen aus meinem Modell.

In einer Ansicht ist das ViewModel das Modell, in der Tat sollte sich die App nicht um Tabellen und andere Persistenzdetails kümmern. Das Modell der App ist vor allem das Domain-Modell, die Pocos für EF oder NH sind Persistenzmodelle. Die Ansichten kennen ihr Modell, das sich von der App oder dem Persistenzmodell unterscheidet.

+0

Also, eine Stimme für ViewModel –