MVC 3 Изменение модели в представлениях с помощью RenderPage - PullRequest
6 голосов
/ 04 октября 2011

У меня проблемы при попытке изменить модель моего представления в MVC 3.

Первое представление ( 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>
}

Второе представление ( ShowFrogDetails.cshtml ), которое я хотел бы использовать по всему сайту:

@model MyProgram.Frog

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

Однако, когда я пытаюсь запустить страницу index.cshtml после передачи списка объектов-лягушек я получаю следующую ошибку при переходе к строке @RenderPage:

Ошибка сервера в приложении '/'.Элемент модели, передаваемый в словарь, имеет тип «System.Collections.Generic.List`1 [MyProgram.Frog]», но для этого словаря требуется элемент модели типа «MyProgram.Frog».

Если бы я удалил код из ShowFrogDetails.cshtml и поместил его в строку внутри цикла foreach в index.cshtml , я бы получил ожидаемые результаты.Однако это не использует повторно существующий код.

Можно ли в любом случае изменить модель на один объект Frog для использования в RenderPage?

Cheers!

1 Ответ

9 голосов
/ 04 октября 2011

Попробуй так:

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