Mein Home Model/View/Controller (der den Anfangszustand der Seite konfiguriert) funktioniert einwandfrei.Benötige ich ein separates Modell/Controller für jedes Szenario oder kann ich ein einzelnes Modell/Controller für mehrere Szenarien verwenden?
Ich muss auch auf Änderungen reagieren, die der Benutzer auf der Seite vornimmt (Auswahl einer Option aus einer Auswahl, Ankreuzen einer Checkbox, etc.), und das funktioniert noch nicht.
Vielleicht ist der Grund, warum ich Probleme habe, dass ich versuche, mein "Heim" -Modell wiederzuverwenden, das nicht nur das enthält, was ich für die Seiteninitialisierung benötige, sondern auch einige andere Dinge. Zum Beispiel mein Modell:
public class HomeModel
{
public DataTable Units { get; set; }
public DataTable Reports { get; set; }
public DataTable UnitReportPairEmailVals { get; set; }
public DataTable UnitReportPairGenerateVals { get; set; }
. . .
}
... enthält Dinge, die Seite zunächst muss („Einheiten“ und „Berichte“ und die von den drei Punkten Punkte dargestellt Dinge), aber auch Dinge erst später benötigt werden (die andere zwei gezeigt).
Ich frage mich, ob zumindest ein Teil meines Problems mit dem Zurückholen dieser Daten (über einen Ajax-Aufruf zu einer anderen Methode in HomeController) ist, weil ich ein separates Modell und Controller für den Ajax-Aufruf verwenden sollte.
Also frage ich mich: ist Model/Controller Proliferation ein Code Geruch/Anti-Muster, oder notwendig? Soll ich ein anderes Modell erstellen wie:
... und einen entsprechenden separaten Controller dafür?
Wenn ich ein komplexes Modell habe, das in verschiedenen Szenarien verwendet wird, scheint es, dass jedes Mal, wenn ich ein Modell als Rückgabewert (Ergebnis) einer Aktion zurückgebe, viele überflüssige/unbelebte Dinge ebenfalls übergeben werden zurück (nur die Mitglieder, an denen ich mich gerade interessiere, werden in den Controller eingetragen, wodurch viele leere/null-Mitglieder zurückgegeben werden).
Also meine Frage ist, sollte ich separate Modelle/Controller für jeden "Anwendungsfall" erstellen, oder ist es okay - oder noch besser - eine Menge Dinge in einem Modell/Controller-Paar zu kombinieren?
Ein gängiger Ansatz besteht darin, ein paar bestimmte 'ViewModel'-Objekte an Ihren Client zu übergeben - und dann möglicherweise einen Auto-Mapper zu verwenden, um das Common-but-Complex' Model' einem szenariospezifischen 'ViewModel' zuzuordnen. Ich sehe keinen Grund, in Ihrem Fall neue 'Controller' oder' Model' Klassen zu erstellen. – Clay
Wenn Sie die Ansicht nicht ändern, warum sollten Sie einen anderen Controller erstellen? Meinst du nicht noch eine ** Action ** in deinem bestehenden Controller? –
Die Wiederverwendung eines zusammengesetzten Modells scheint eher ein Anti-Pattern als eine Proliferation von Modellen zu sein. Außerdem bin ich etwas skeptisch, wenn ich 'DataTable' in einem Modell verwende. –