Ich bin relativ neu bei MVC, also ist dies wahrscheinlich eine Anfängerfrage.Ansichtsspezifische Modelle in ASP.NET MVC?
Ich versuche, die besten Praktiken, wie zur Aufrechterhaltung klare Trennung von Bedenken in einigen Szenarien zu verstehen, den straightfoward nicht angezeigt werden.
Es gibt zwei Szenarien, die ich gerade betrachte. Stellen Sie sich eine sehr einfache App vor, mit der Benutzer Online-Profile für Rechtsanwälte anzeigen und bearbeiten können. Es gibt eine Aktion/Ansicht zum Anzeigen eines bestimmten Benutzerprofils und eine Aktion/Ansicht zum Bearbeiten eines bestimmten Benutzerprofils. Es ist einfach, sich eine schöne und saubere Model-Klasse vorzustellen, um die Details eines Benutzerprofils darzustellen, die möglicherweise mit dem Entity Framework erstellt und der SQL-Tabelle des Benutzerprofils zugeordnet wurden.
Nach Ansicht Aktion/Ansicht für das Profil eines Benutzers anzeigt, funktionell, ich brauche eine Schaltfläche oder einen Link zu haben, die einem Benutzer bearbeiten das Profil lässt. Aber das sollte nur für einen Teil der Benutzer verfügbar sein. Zum Beispiel kann der Benutzer sein eigenes Profil bearbeiten. Außerdem können Superuser das Profil eines beliebigen Benutzers bearbeiten. Meine Frage ist, wie sollte die Ansicht entscheiden, ob der Link beim Rendern eines bestimmten Profils vorhanden sein soll. Ich nehme an, es ist falsch, dass die View die Logik enthält, um festzustellen, ob der aktuelle Benutzer das aktuelle Profil bearbeiten kann. Sollte ich der UserProfile-Modellklasse eine IsEditable-Eigenschaft hinzufügen? Das fühlt sich nicht tragisch an, aber es fühlt sich auch nicht ganz richtig an. Soll ich eine neue Model-Klasse erstellen, die das UserProfile mit zusätzlichen Informationen zur Sicherheit zusammenfasst?
Ein anderes Szenario ... Bei der Bearbeitung eines bestimmten Profils ist eines der Dinge, die bearbeitet werden können, die Liste der Spezialisierungen für einen bestimmten Anwalt. Die Liste der möglichen Spezialitäten ist nicht festgelegt. Wenn die Ansicht sie in einem Kombinationsfeld darstellen möchte, benötigt sie die Liste aller möglichen Besonderheiten aus der Datenbank. Die Ansicht sollte sie nicht direkt aus der Datenbank holen, also mache ich das Aggregatmodell noch einmal und stelle die Ansicht sowohl mit dem UserProfile als auch mit einer Liste gültiger Spezialgebiete zur Verfügung?
Ich denke, die allgemeine Frage, die ich, um herauszufinden, ich versuche ist, sollte ich mit dem Erstellen von vielen kleinen Modellklassen bequem sein, die einzelnen Ansichten im Wesentlichen spezifisch sind. Jede Klasse würde die verschiedenen nicht verwandten Teile des größeren Domänenmodells enthalten, die für diese bestimmte Ansicht benötigt werden.