8 Stimmen

Wie füge ich Daten in eine Masterpage ein?

Wie können Sie ein stark typisiertes Objekt in ASP.NET MVC in die Masterseite einfügen?

Haben Sie eine ViewModelBase-Klasse, die Informationen zur Masterseite enthält und von der für jedes Ansichtsmodell geerbt wird, oder gibt es einen besseren Ansatz?

10voto

Robert Harvey Punkte 173098

Alex,

Ich denke, was du meinst, ist: "Wo ist mein Master-Page-Controller?"

Schau dir den folgenden Link an. Dort wird erklärt, wie man einen "Application Controller" erstellt, eine abstrakte Klasse, die von anderen Controllern geerbt werden kann, so dass du den Code nur einmal schreiben musst, der deine benötigten Daten für die Master-Page in die Ansicht einfügt.

Daten an Master Pages übergeben:
http://www.asp.net/learn/MVC/tutorial-13-cs.aspx

Schau dir auch den folgenden Link an, der erklärt, wie man Teilansichten und Untercontroller in ASP.NET MVC implementiert:

Teilanforderungen in ASP.NET MVC
http://blog.codeville.net/2008/10/14/partial-requests-in-aspnet-mvc/

3voto

Dan P Punkte 765

Das ist genau der Ansatz, den ich verwende. Ich habe eine MasterViewData-Basisklasse, die Informationen enthält, die möglicherweise allen Seiten gemeinsam sind und die zum Rendern der Masterseite verwendet wird (angemeldeter Benutzer, wenn keine integrierte Authentifizierung verwendet wird, Seitenmeldungen auf Seitenebene). Alle meine anderen View-Datenklassen leiten davon ab.

Ich mache auch das, was Robert erwähnt: Ich habe eine Basiskontrollerklasse, die die View-Methode außer Kraft setzt, die tatsächlich einen Teil der Masterseiteninformationen in die Viewdata-Klassen einfügt.

Ich bin gespannt, ob es andere Optionen gibt, aber dieser Ansatz hat definitiv gut für mich funktioniert.

0voto

Wyatt Barnett Punkte 15500

Wir verwenden ein ähnliches Basis-ViewData, insbesondere für große, inhaltsorientierte öffentliche Websites, auf denen viele gemeinsame UI-Elemente verwendet werden.

Der Trick, den wir verwenden, um das gemeinsame Stück einzufügen, besteht darin, einen ActionFilter zu verwenden, um das MasterPageViewModel um die von unseren Controllern zurückgegebenen Inhalte zu injizieren. Dies ist wesentlich sauberer als eine spezielle Controllerklasse mit einer überschriebenen Ansichtsmethode zu haben, da es definitiv Bereiche gibt, in denen man es nicht will/braucht. Und das ganze Konzept der Komposition über Vererbung.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X