2011-10-04 24 views
6

Estoy teniendo problemas al intentar cambiar el modelo de mi vista en MVC 3.MVC 3 Cambio de modelo en las vistas con RenderPage

Primera vista (index.cshtml):

@model IEnumerable<MyProgram.MyFrogCollection> 

<h1>Welcome to my frog collection</h1> 
@foreach(MyProgram.Frog frog in Model) 
{ 
    <div class="frogDetails"> 
    @RenderPage("ShowFrogDetails.cshtml", frog); 
    </div> 
} 

segunda vista (ShowFrogDetails.cshtml), que me gustaría utilizar en todo el sitio:

@model MyProgram.Frog 

<h3>Name:</h3><div class="detail">@Model.Name</div> 
<h3>Colour:</h3><div class="detail">@Model.Colour</div> 

Howe ver cuando trato de ejecutar la página index.cshtml después de pasar en una lista de objetos de rana me sale el siguiente error al llegar a la línea @RenderPage:

Error de servidor en la aplicación '/'. El elemento del modelo pasado al diccionario es del tipo 'System.Collections.Generic.List`1 [MyProgram.Frog]', pero este diccionario requiere un elemento de modelo del tipo 'MyProgram.Frog'.

Si tuviera que eliminar el código de ShowFrogDetails.cshtml y colocarlo en línea dentro del bucle foreach de index.cshtml los resultados son lo que esperaría. Sin embargo, esto no reutiliza el código existente.

¿Hay alguna forma en que pueda cambiar el modelo a un solo objeto Frog para usar en RenderPage?

¡Salud!

Respuesta

7

Trate de esta manera:

<div class="frogDetails"> 
    @Html.Partial("ShowFrogDetails", frog) 
</div> 
+0

impresionante, que hace el trabajo perfectamente! ¡Salud! – Gin

Cuestiones relacionadas