ASP.NET MVP - Verwenden von Benutzersteuerelementen

9

Ich schreibe meine erste App mit ASP.NET MVP (versucht Supervisory Controller) und Unit Testing (besser spät als nie!), und ich bin in ein kleines Dilemma geraten. Ich habe 3 User Controls geschrieben, alle getestet und verkabelt, Moderatoren im Schlepptau. Jetzt bin ich zu einer Seite gekommen, die diese drei Benutzerkontrollen annimmt und folgendes Problem festgestellt hat:

User Control 1 ist DateSelector, es ist ein Kalender-Steuerelement mit ein paar anderen Tasten / Listen. Nichts wirklich aufregendes.

Benutzerkontrolle 2 ist DailyList. Rate, was es ist. Wie auch immer, Sie können auswählen / löschen usw .. Wenn Sie ein Element aus der Gridview auswählen, muss Benutzersteuerelement 3 ausgefüllt werden.

Benutzerkontrolle 3 ist ItemDetail. Hier sind die DropDownLists, TextBoxes, etc ... einige mit bestehenden Abhängigkeiten zu anderen (die Auswahl einer Option in DropDown beeinflusst die Optionen in DropDown 2).

Wenn ich ein neues Datum aus meinem DateSelector auswähle, hebe ich das Ereignis vom DateSelector Presenter an? Ich muss den anderen Nutzern mitteilen, dass ein neues Datum ausgewählt wurde, damit sie ihre Daten erneut binden können, aber wie? Wenn ich den Moderator der Seite dazu nutze, die Moderatoren der Ansichten zur Benutzersteuerung zu abonnieren, würde ich das Gesetz der Demeter nicht offen brechen (die Moderatoren als Eigenschaften durch ihre Ansichten aussetzen)? Darf ich den Presenter der Seite nicht als allwissenden Controller der Seite verwenden? Gibt es etwas, das mir fehlt?

Alles, was ich bisher gelesen habe, sagt: "MVP ist großartig, sogar mit User Controls", aber die Verwendung von User Controls ist praktisch vergessen, wenn es um Beispiele geht. Es scheint mir, MVC würde meinem Denkmuster näher passen, aber derzeit ist MVC keine Option. Jede Hilfe wäre hier großartig. Vielen Dank im Voraus.

    
jstephenson 03.12.2008, 22:39
quelle

1 Antwort

4

Der Seitenpräsentator muss derjenige sein, der die Interaktionen zwischen den Steuerelementen auf der Seite koordiniert. Wer würde es sonst tun? Ich möchte, dass der Seitenpräsentator das Ereignis des DateSelector-Benutzersteuerelements abgehört. Aus Sicht des Seiten-Presenters muss es wahrscheinlich nicht wissen, wer das Ereignis ausgelöst hat (Ansicht oder Moderator), da es den DateSelector als vollständig gekapseltes Steuerelement ansieht. Die internen Funktionen sollten vom Moderator der Seite ausgeblendet werden.

Alles, was es weiß, ist, dass das DateSelector-Benutzersteuerelement ein Ereignis ausgelöst hat und jetzt die anderen Steuerelemente auf der Seite benachrichtigen muss, indem entweder sein eigenes Ereignis ausgelöst oder Methoden explizit auf dem Präsentator aufgerufen werden.

    
Haacked 04.12.2008, 06:08
quelle

Tags und Links