2009-04-23 8 views
15

Ich habe eine stark typisierte Masterseite, aber ich möchte einen anderen Typ für einige der untergeordneten Seiten verwenden.ASP.NET MVC - verschiedene Modelle für Masterseite und Ansichtsseite

Zum Beispiel auf der Masterseite ... ist

<%@ Master ... Inherits="System.Web.Mvc.ViewMasterPage<MyWeb.Models.Client>" %> 

Client bereits ein zusammengesetztes Objekt, so auf einige der untergeordneten Seiten mich auf das gleiche Modell halten und verweist nur Objekte Mitglied. Aber auf anderen Seiten ist das nicht sinnvoll, da es sich um ein anderes Modell handelt, z. B. eine Kindseite, die sich mit einem Kundenmodell befasst.

Meine Masterseite benötigt immer noch das Clientmodell, aber die untergeordneten Ansichten funktionieren vollständig mit verschiedenen Modellen. Das Problem ist, dass Sie in einem Controller nur ein Objektmodell an die Ansicht übergeben können. Gibt es eine Möglichkeit, ein Modell an den Master und ein anderes an die Ansicht zu übergeben? Vielen Dank!

+0

Schöne Frage, ich würde das gleiche fragen! Top Antwort, obwohl ich sagen muss. Wie Mastermind sagt, so einfach! Nun, es ist jetzt lol ;-) –

+0

Gleiches Dilemma - gut gesagt. Danke op. – nocarrier

Antwort

14

Sie können eine Hierarchie erstellen und das Basismodell an die Masterseite und die untergeordneten Modelle an Ihre Ansichten übergeben.

public class BaseModel 
{ 
} 

public class ChildModelOne : BaseModel 
{ 
} 

public class ChildModelTwo : BaseModel 
{ 
} 

So meistern Sie Sicht nur seine eigenen Daten (erhältlich in Urmodell Klasse) sehen, während Sie den Blick Zugriff auf die erweiterten Information verfügbaren Klassen in Kindmodell haben.

Sehr einfach.

+0

Fantastisch. Elegant und wundervoll. – nocarrier