MVC 3使用RenderPage更改视图中的模型

时间:2011-10-04 19:33:02

标签: asp.net-mvc-3 model ienumerable renderpartial

尝试在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 中删除代码并将其置于 index.cshtml 的foreach循环内,那么结果就是我所期望的。但是,这不会重用现有代码。

无论如何,我可以将模型更改为单个Frog对象以在RenderPage中使用吗?

干杯!

1 个答案:

答案 0 :(得分:9)

试试这样:

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