2011-10-04 9 views
6

Sto riscontrando dei problemi quando si cerca di cambiare il modello di mio punto di vista in MVC 3.MVC 3 Modifica Modello in Vista con RenderPage

prima 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> 
} 

secondo punto di vista (ShowFrogDetails.cshtml), che vorrei utilizzare in tutto il sito:

@model MyProgram.Frog 

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

Howe ver quando cerco di eseguire la pagina index.cshtml dopo aver superato in un elenco di oggetti di rana ottengo il seguente errore quando ottiene alla linea @RenderPage:

Errore del server in '/' applicazione. L'elemento del modello passato nel dizionario è di tipo 'System.Collections.Generic.List`1 [MyProgram.Frog]', ma questo dizionario richiede un modello di tipo "MyProgram.Frog".

Se dovessi rimuovere il codice dal ShowFrogDetails.cshtml e metterlo in linea all'interno del ciclo foreach di index.cshtml i risultati sono quello che mi aspetterei. Tuttavia questo non riutilizza il codice esistente.

È comunque possibile modificare il modello in un singolo oggetto Rana da utilizzare in RenderPage?

Cheers!

risposta

7

Prova in questo modo:

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

impressionante, che fa il lavoro perfettamente! Saluti ! – Gin