Wählen Sie die Verwendung der Liste in asp.net mvc

8

Ich arbeite an einer MVC-Site, die die erste ist, die meine Firma gemacht hat. Eine der Sachen, die ich oft mache, ist die Erstellung von Auswahllisten in einem Controller, die sie in viewdata und beim Erstellen einer html.DropDownList einlesen. Es gibt ein paar Dinge, die mir so übel riechen, wie ich es mache.

  1. einige Seiten können Listen von Dingen wiederholen (die Bordrate eines Hotelzimmers, in der ein Benutzer so viele Räume zu einem Hotel hinzufügen kann, wie sie brauchen), derzeit benutze ich die selbe Auswahlliste, ist diese gute Praxis oder sollte Sie haben jeweils eins?

  2. Im obigen Beispiel ist der "Raum" ein Ascx, der entweder durch einen Renderpartial- oder einen Ajax-Aufruf über jQuery gerendert wird. Was ist der beste Weg für den Controller, die selectlist zu übergeben, so dass der ascx sie benutzen kann? Derzeit füge ich die viewdata für die Seite hinzu, die ihre viewdata an das renderpartial übergibt, aber dann muss die action-Methode auch beim ajax-Aufruf hinzugefügt werden die selectlist zu den Viewdata für die ascx, agan nicht sicher, das ist der beste Weg.

  3. Ich habe ein Repository, das diese "statischen" Daten enthält und als generische Liste zurückgibt. Jedes Mal, wenn der Controller die Daten benötigt, trifft er das Repository für die Liste (es gibt ein paar mehr als nur Board-Rate, Dinge wie Titel für Leute, Herr, Frau usw. und andere) Ich vermute, dass eine Art Cache besser wäre, da die Daten selten, wenn überhaupt, sich ändern.

Hat jemand in diesen Bereichen einen Rat?

    
Pharabus 15.12.2008, 13:37
quelle

2 Antworten

3
  1. Wenn diese SelectLists vollkommen gleich sind, dann ist es sicher besser, eine Liste für mehrere DropDownLists zu verwenden.

  2. Sieht aus wie seine übliche Verwendung. Ich verwende den ähnlichen Ansatz, denke aber darüber nach, einige der Steuerelemente auf Html.RenderAction zu portieren, da sich das Durchblättern der ViewData-Steuerelemente der Seite für mich ebenfalls nicht gut anfühlt. Ja, ich weiß, dass es nicht reine MVC sein wird:)

  3. Wenn Ihr ORM Cache unterstützt, verwenden Sie es natürlich.

Aber auch wenn Ihr Projekt nicht klein ist und Sie denken, es wird weiter wachsen, empfehle ich, ein Service Layer (PoEAA-Muster) oberhalb Ihrer Repositories zu implementieren, das auch Geschäftslogik und Cache-Management-Logik enthält.

Wenn Sie Ihren Cache transparent verwalten möchten, ohne Ihre dal- oder mvc-Ebene zu beeinflussen, denke ich, dass die beste Vorgehensweise die Verwendung von AOP ist.

    
maxnk 15.12.2008, 14:14
quelle
0

Eine Möglichkeit besteht darin, die Daten, die Sie für die Auswahlliste benötigen, über eine typisierte Ansicht in Ihr Modell einzufügen. Die Ansicht kann über die Daten im Modell iterieren, um alle gewünschten Auswahllisten zu generieren. Sie können ein Objekt auch direkt in die ViewData-Auflistung stopfen, aber ich denke, eine typisierte Ansicht führt zu viel saubererem Code.

    
Darryl Braaten 15.12.2008 21:07
quelle

Tags und Links