2009-04-23 19 views
15

Ho una pagina principale fortemente tipizzata, ma voglio usare un tipo diverso per alcune delle sue pagine figlio.ASP.NET MVC: diversi modelli per pagina principale e vista pagina

Per esempio, sulla pagina master ...

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

client è già un oggetto composto, quindi su alcune delle pagine figlio posso mantenere allo stesso modello e proprio riferimento oggetti membro. Ma su altre pagine, non ha senso farlo perché ho a che fare con un modello diverso, ad esempio una pagina figlio che si occupa di un modello cliente.

La mia pagina master ha ancora bisogno del modello Client, ma le viste figlio funzioneranno interamente con modelli diversi. Il problema è che in un controller è possibile solo passare un modello di oggetto alla vista. C'è un modo per passare un modello al master e uno diverso alla vista? Grazie!

+0

Bella domanda, stavo per chiedere la stessa cosa! La risposta migliore però devo dire. Come dice Mastermind, così semplice! Bene, ora è lol ;-) –

+0

Lo stesso dilemma - ben dichiarato. Grazie op. – nocarrier

risposta

14

È possibile creare una gerarchia e passare il modello di base alla pagina master e ai modelli figlio alle proprie viste.

public class BaseModel 
{ 
} 

public class ChildModelOne : BaseModel 
{ 
} 

public class ChildModelTwo : BaseModel 
{ 
} 

In questo modo, Master View vedrà solo i propri dati (disponibili nella classe del modello master), mentre, viste avranno accesso alle informazioni estese disponibili in classi di modelli bambino.

Molto semplice.

+0

Fantastico. Elegante e meraviglioso. – nocarrier

Problemi correlati