2011-01-07 5 views
1

Ich baue eine Website in ASP.NET MVC 2, die anonyme Benutzer und registrierte Benutzer ermöglicht. Wenn ein Benutzer angemeldet ist, möchte ich auf jeder Seite mehrere Informationen zu diesem Profil anzeigen (z. B. Heimatstadt, Lieblingsfarbe usw.). Aus der Sicht des Betrachters verstehe ich die Verwendung von Masterseiten und das Erstellen von Teiltastern, um es DRY zu halten.Wie zeige ich mehrere Benutzerinformationen auf jeder Seite in ASP.NET MVC 2 an?

Allerdings, wo ich stecke ist, wie übergebe ich diese Benutzerinformationen an die Ansicht für jede Seite? Ich habe bereits die Beziehungen zwischen den Datenbanktabellen eingerichtet (ich benutze EF), also kann ich dies für jede Aktion über ViewData individuell durchführen, aber das ist offensichtlich für jede Seite auf der Seite lächerlich.

Bis jetzt hat meine Forschung begonnen, mich auf den Pfad der Erstellung eines Basis-Controllers und Basisansichtsmodells zu führen, von dem die anderen Controller und View-Modelle erben werden. Aber ich habe das Gefühl, etwas Offensichtliches zu vermissen. Irgendwelche Zeiger?

Antwort

4

Wenn Sie Ihre Master-Seite mit der RenderAction-Methode verwenden, können Sie Controller-Aktionen für die verschiedenen sich wiederholenden Teile Ihrer Seite aufrufen, von denen jeder Datenzugriff durchführen und eine Teilansicht rendern kann. Auf diese Weise können Sie Ihre Ansichtsmodelle trennen und trotzdem bestimmte Elemente auf allen Ihren Seiten anzeigen.

Dieser Ansatz funktioniert gut für uns.

0

Wir verwenden einen Basiscontroller, um es in ViewData zu speichern.

Sie könnten auch ein Aktionsattribut auf dem Controller verwenden, anstatt von einem Basiscontroller zu erben.

0

Sie können eine Basisklasse für Ihre Modelle erstellen, die die Daten enthält, die auf jeder Seite angezeigt werden.

+0

wahrscheinlich eine schlechte Idee, es sei denn, Sie sprechen über eine Basis ViewModel. Es gibt keinen Grund, dass Modelle die Präsentationsanforderungen kennen und eine Modellhierarchie erstellen müssen, um die Anforderungen der Benutzeroberfläche zu erfüllen. –

+0

Ich spreche natürlich über Ansichtsmodelle, es gäbe keine Entschuldigung dafür, UI-Daten zu Ihren tatsächlichen Modellklassen hinzuzufügen. Das heißt, die Antwort von Stripling Warrior ist sehr gut, ich wusste nicht, dass du es so schaffen kannst und ich werde das in Zukunft selbst machen. – KOTJMF

Verwandte Themen