Ich verwende einige (2 oder 3) Masterseiten in meiner ASP.NET MVC-Anwendung und sie müssen jeweils Informationen aus der Datenbank anzeigen. Wie zum Beispiel eine Liste der Sponsoren, aktueller Spendenstatus etc.
Also meine Frage war, wo sollte ich diese Master-Seite Datenbank aufrufen Code?
Normalerweise sollten diese in eine eigene Controller-Klasse gehen, oder? Aber das würde bedeuten, dass ich sie manuell verdrahten müsste (z. B. ViewDatas übergeben), da es außerhalb des normalen Routing-Frameworks liegt, das vom MVC-Framework bereitgestellt wird.
Gibt es einen Weg dazu, ohne ViewData Passing / Action-Aufrufe zu verketten, um Seiten manuell zu maskieren oder die Frameworks zu untergliedern?
Die Menge an Dokumentation ist sehr gering ... und ich bin sehr neu in all dem, einschließlich der Konzepte von MVC selbst, also teile bitte deine Tipps / Techniken dazu.
Eine Möglichkeit besteht darin, in der Masterpage-Ansicht den Hook für die ViewData einzufügen und dann einen BaseController: Controller (oder mehrere Basisklassen) zu definieren, in dem Sie alle benötigten db-Aufrufe ausführen.
Was Sie tun wollen, ist das gleiche, was in Diese Artikel.
Ich hoffe, das hilft!
Grüße
Gute Frage. Sie haben mehrere Möglichkeiten für Sie.
Ich denke, die beste Wahl besteht darin, Steuerelemente für die Region Ihrer Masterpage zu erstellen, die Daten enthält, die ausgefüllt werden müssen. Daher muss Ihre Masterpage streng Designelemente enthalten. Viel Glück.
Wenn es Ihnen nichts ausmacht, stark typisierte Ansichtsdaten einzugeben, können Sie alle Masterseitendaten in eine gemeinsame Basisklasse für viewData einfügen. Sie können diese Daten im Konstruktor der Basisklasse festlegen. Alle Ihre Ansichten, die zusätzliche Daten erfordern, benötigen dann stark typisierte Viewdata, die von dieser Basisklasse erben.
Um einen Aufruf von View () in Ihren Controllern ohne explizite View-Daten zu ermöglichen, können Sie View in Ihrer ControllerBase überschreiben:
%Vor%Tags und Links asp.net-mvc master-pages