2009-04-23 15 views
15

Tengo una página maestra fuertemente tipada, pero quiero usar un tipo diferente para algunas de sus páginas secundarias.ASP.NET MVC: diferentes modelos para página maestra y página de vista

Por ejemplo, en la página maestra ...

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

cliente ya es un objeto compuesto, por lo que en algunas de las páginas secundarias que pueda mantener el mismo modelo y acaba de hacer referencia a objetos miembros. Pero en otras páginas, no tendría sentido hacerlo ya que estoy tratando con un modelo diferente, por ejemplo, una página secundaria que trata con un modelo de Cliente.

Mi página maestra aún necesita el modelo de cliente, pero las vistas secundarias funcionarán con diferentes modelos por completo. El problema es que, en un controlador, solo puede pasar un modelo de objetos a la Vista. ¿Hay alguna forma de pasar un modelo al maestro y uno diferente a la vista? ¡Gracias!

+0

Nice Pregunta, ¡iba a preguntar lo mismo! La respuesta principal, aunque tengo que decir. Como dice Mastermind, ¡es tan simple! Bueno, ahora es lol ;-) –

+0

Mismo dilema - bien planteado. Gracias op. – nocarrier

Respuesta

14

Puede crear una jerarquía y pasar el modelo base a la página maestra y los modelos secundarios a sus vistas.

public class BaseModel 
{ 
} 

public class ChildModelOne : BaseModel 
{ 
} 

public class ChildModelTwo : BaseModel 
{ 
} 

De esta forma, la vista maestra sólo verá sus propios datos (disponibles en la clase de modelo maestro) mientras vistas tendrán acceso a la información ampliada disponible en las clases del modelo niño.

Muy simple.

+0

Fantástico. Elegante y maravilloso. – nocarrier

Cuestiones relacionadas