2011-10-04 3 views
6

Je vais avoir des problèmes en essayant de changer le modèle de mon point de vue dans MVC 3.MVC 3 Changer de modèle dans les vues avec RenderPage

Première vue (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> 
} 

deuxième vue (ShowFrogDetails.cshtml), que je voudrais utiliser sur tout le site:

@model MyProgram.Frog 

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

Howe ver lorsque je tente de lancer la page Index.cshtml après le passage dans une liste d'objets de grenouille que je reçois l'erreur suivante lors de l'obtention de la ligne de @RenderPage:

Erreur du serveur dans l'application «/». L'élément de modèle transmis au dictionnaire est de type 'System.Collections.Generic.List`1 [MyProgram.Frog]', mais ce dictionnaire requiert un élément de modèle de type 'MyProgram.Frog'.

Si je devais supprimer le code de ShowFrogDetails.cshtml et placez-le en ligne dans la boucle de foreach de Index.cshtml les résultats sont ce que j'attendais. Cependant, cela ne réutilise pas le code existant.

Y at-il de toute façon que je puisse changer le modèle en un seul objet Frog à utiliser dans le RenderPage?

À la votre!

Répondre

7

Essayez comme ceci:

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

impressionnant, qui fait le travail parfaitement! À votre santé ! – Gin

Questions connexes