2017-01-11 2 views
-1

sagen, wir haben einfaches Modell. Wenn ich Informationen über den Manager auf der Seite benötige, kann ich eine separate Anfrage für Managerdaten stellen. Was nun, wenn ich eine Tabelle mit Tausenden von Mitarbeitern anzeigen muss, und ich brauche den Manager-Namen, kann ich nicht für jeden Mitarbeiter eine Manager-Anfrage stellen. Ich könnte ManagerId durch ein Manager-Objekt ersetzen, aber in den meisten Fällen wird es nicht benötigt. Wir könnten ein separates Modell für die gegebene Tabelle erstellen, aber was, wenn Sie ein anderes kleineres Detail in einer anderen Tabelle benötigen, die sich auf ProfileId bezieht, erstellen wir ein anderes Modell dafür? Wir werden viele ähnliche Modelle haben müssen, es wird ein Durcheinander sein, und wir brauchen Methoden, um Daten für jeden von ihnen anzufordern.Wie mit zusätzlichen Modell-Eigenschaften in verschiedenen Ansichten erforderlich beschäftigen

Was einige Leute tun, ist, dass sie ManagerName in dieses Modell hinzufügen, nur eine kleine Eigenschaft, wen interessiert das? Und dann brauchst du ProfileName, also fügen wir das hinzu. Und dann noch ein kleineres Detail, das wir in einer anderen Tabelle zeigen müssen, "nützt es nicht, ein anderes Modell nur dafür zu kreieren, richtig?" Das Problem ist in den schlimmsten Fällen, dass wir mit einem Modell enden, das Eigenschaften hat, die nicht direkt damit verbunden sind, und Sie haben keine Ahnung, welches was ist. Verschiedene Methoden im Repository erhalten nur Daten für einige dieser zusätzlichen Eigenschaften, was das Verständnis erschwert.

Was wären die besten Praktiken in diesem Fall? Es gibt nicht viele Informationen darüber, wie man mit solchen Dingen umgeht.

Antwort

0

IMHO, der beste Ansatz ist, das ViewModel Pattern anzuwenden und ein ViewModel für jede View zu erstellen. Ich weiß, dass dies auf den ersten Blick wie Zeitverschwendung klingt, aber man muss bedenken, dass normalerweise unterschiedliche Ansichten unterschiedliche Anforderungen und Felder haben. Dieser Ansatz ist gut, um eine klare Abgrenzung zwischen der Benutzeroberfläche und der Anwendungslogik Ihrer Anwendung zu erreichen.

Eine konsistente Namenskonvention übernehmen ist ein guter Weg um zu vermeiden, in ein Chaos von obskuren Viewmodels zu geraten.

Werfen Sie einen Blick auf this article, um mehr Details über das Muster zu erhalten (der Autor erwähnt WPF und Silverlight, aber das Prinzip ist das gleiche für MVC).

Verwandte Themen