2011-06-21 15 views
8

Tengo dos vistas parciales que son exactamente las mismas, pero para el @model.paso MVC3 @model a la vista parcial

@Model Project.Models.X

@Model Project.Models.Y

¿Cómo podría pasar este tipo de modelo a la vista para que pueda utilizar la misma vista para ambos?

Respuesta

3

Puede crear un ViewModel Z, que pasó a Ver. Si desea pasar el modelo X o Y, simplemente pasa eso a Z y luego pase el modelo Z a Ver.

2

Haga que ambas clases implementen la misma interfaz, y use la interfaz como su modelo.

Según lo sugerido por Tim: Si es posible, también podría heredar de la misma clase base. Aunque esto no siempre es posible, usar el enfoque de interfaz es mayormente posible.

+1

... o clase base. –

1

Mayormente como gandil: Crea un ViewModel Z pero usa Automapper para mapear desde Y y X. De esta manera puedes mantener tus modelos de UI limpios y SECOS.

5

No estoy seguro si esto es la mejor práctica, pero también se podría utilizar HTML.RenderAction para llamar a su controlador y haga que sea devolver un PartialViewResult con cualquier modelo que desee, así:

@{Html.RenderAction("MyPartialAction", "MyController", new { someID = 1 });} 

y

public PartialViewResult MyPartialAction(int? someID) 
{ 
     return PartialView("MyPartial",SomeModel); 
} 
Cuestiones relacionadas