Das ist genau der Ansatz, den ich verwende. Haben Sie eine MasterViewData-Basisklasse, die Informationen enthält, die allen Seiten gemeinsam sind und zum Rendern der Masterseite verwendet werden (angemeldeter Benutzer, wenn keine integrierten Nachrichten auf Seitenebene verwendet werden). Alle meine anderen View-Datenklassen sind davon abgeleitet.
Ich mache auch, was Robert erwähnt: Ich habe eine Basis-Controller-Klasse, die die View-Methode überschreibt, die tatsächlich behandelt, einige der Masterseiteninformationen in die Viewdata-Klassen zu setzen.
Ich bin neugierig, ob es andere Optionen gibt, aber dieser Ansatz hat definitiv gut für mich gearbeitet.
Gibt es ein gültiges Szenario dafür? In der allgemeinen Ansicht sollten bestimmte Inhalte in den Ansichten gerendert werden. Die Masterseite sollte nur allgemeine Elemente bereitstellen, die sich um die Ansicht der Ansicht herum befinden. –
Vielleicht bin ich komplett hier, aber ich dachte, ich werde eine stark typisierte Ansicht verwenden, wenn ich Dinge wie derzeit angemeldeter Benutzername usw. der Masterpage hinzufügen muss. Wie sonst würde ich das tun, wenn nicht durch das ViewModel, das der Seite gegeben wird? – Alex
Angenommen, Sie verwenden eine Standardauthentifizierungsmethode, z. Forms Authentication, dann kann das mit <% = HttpContext.Current.User.Identity.Name%> –