MVC ViewModel Beispiel

8

Ich habe Tutorials gemacht und versucht, Best Practice zu lernen, wenn es um MVC-Entwicklung geht. Das Design, das ich unten verwende, kommt von Pro ASP.Net MVC5 von Apress / Adam Freeman. Bis jetzt kommt alles gut voran ... aber ich bin immer noch nicht ganz dazu gekommen, mich mit Controllern zu beschäftigen. Ja, ich verstehe das Konzept der Controller, aber immer noch kämpfen, wenn es darum geht, Methoden zu posten und zu bekommen. Hier ist der Ablauf meiner Beispiel-MVC-Anwendung:

Mein App.Domain-Projekt

Ich habe eine Benutzertabelle in der Datenbank und referenziere sie mit Entities / Users.cs

%Vor%

Als nächstes habe ich eine Schnittstelle und es befindet sich Abstract / IUsersRepository.cs

%Vor%

Ich fahre fort, jetzt fülle ich meine Entitäten Concrete / EFUsersRepository.cs

%Vor%

Außerdem verwendet das Lehrbuch Ninject, das ich verstehe und alles ist korrekt gebunden. Ich werde diesen Code nicht veröffentlichen, wenn mich nicht jemand dazu auffordert.

Hier ist meine app.WebUI Lösung:

Das Lehrbuch führt mich durch die Erstellung eines ViewModels. Dies ist, wo die Dinge ein wenig verschwommen für mich werden. Ist das ViewModel ein zusätzlicher Kanal, um die Entitäten zu erhalten? Anstatt die Modelle selbst zu referenzieren, sollte ich ViewModels immer zu SELECT-, UPDATE-, INSERT-, DELETE-Daten (Models / UsersViewModel.cs) erstellen?

%Vor%

In dem Szenario muss der Benutzer eine E-Mail eingeben. Anschließend überprüft der Controller die Datenbank auf die E-Mail. Wenn es vorhanden ist, dann leiten Sie zur About-Ansicht (Controllers / HomeController.cs) um.

%Vor%

Und hier ist meine Ansicht (Home / Index.cshtml):

%Vor%

Irgendwelche Ratschläge, wie man ein ViewModel richtig benutzt?

    
JoshYates1980 28.06.2014, 17:15
quelle

1 Antwort

9

Im Juni 2014 habe ich diese Frage beim Lernen von MVC gestellt. Ab heute verstehe ich das Konzept eines Viewmodels. Hoffentlich hilft das einem anderen MVC Anfänger:

Mein Modell, das die Datenbanktabelle darstellt:

%Vor%

Es gibt zwei Eins-zu-viele-Beziehungen und eine Eins-zu-Eins-Beziehung. Entitätsrahmen und Abhängigkeitsinjektion. (Dies ist nicht notwendig für Viewmodel Erklärung.)

Zuerst erstelle ich ein View-Modell für den temporären Speicher, um vom Controller zur View zu gelangen. CountyViewModel.cs

%Vor%

Sie haben die Flexibilität, andere Namen und Datentypen als Ihr Modell zu verwenden. Zum Beispiel ist meine Datenbankspalte UserID, mein Modell ist UserID, aber mein Viewmodel ist UserName. Und Sie müssen keine Daten an die Ansicht übergeben, die nicht verwendet wird (gesamtes Modell). Dieses Beispiel benötigt nur drei Teile des County-Modells.

Innerhalb meines Controllers deklariere ich mein View-Modell:

Ich brauche Daten:

%Vor%

Weiter,

%Vor%

Sie können dies auch folgendermaßen angeben:

%Vor%

Jetzt ist es Zeit, die Ansicht weiterzugeben:

%Vor%

In der Ansicht:

%Vor%

Hier ist ein einfaches Beispiel für die Übergabe von Daten mithilfe eines Viewmodels und die Verwendung von Serviceaufrufen an die Datenbank mit Entity Framework:

Beispiel Controller

%Vor%

Beispiel ViewModels

%Vor%

Beispiel Serviceschicht

%Vor%

Beispiel Repository-Ebene

%Vor%     
JoshYates1980 20.06.2016 14:34
quelle