MVC将模型传递给子部分视图

时间:2014-02-01 17:08:39

标签: c# asp.net-mvc-4

让我用下面的例子来解释我的问题。

我正在一个有意见的网站上工作:

Country.cshtml(这是父视图)

@model IEnumerable<MvcExample.Models.Countries>
@html.Partial("_States", Model)

_States.cshtml具有子部分视图

@Html.Partial("_Cities", Model)

_Cities.cshtml代码:

@foreach(var item in Model)
{
...
}

我应该如何将Country.cshml中的Model传递给_Cities.html?

1 个答案:

答案 0 :(得分:0)

根据您传递的模型,您在部分视图中使用与父视图中相同的模型。您应该在将使用该模型的部分顶部的@model指令中引用正确的模型。所以尝试下面的版本:

Country.cshtml

@model IEnumerable<MvcExample.Models.Countries>
@html.Partial("_States", Model) // passing Model of type IEnumerable<MvcExample.Models.Countries>

_States.cshtml具有子部分视图

@model IEnumerable<MvcExample.Models.Countries>
.... // some other code
@Html.Partial("_Cities", Model) // passing Model of type IEnumerable<MvcExample.Models.Countries>
.... // some more code

_Cities.cshtml代码:

@model IEnumerable<MvcExample.Models.Countries>
.... // some code.
@foreach(var item in Model)
{
    ....
    // iterate the items in the Model.
}

如果您希望通过模型中的某个属性,那么您也可以这样做:

@model IEnumerable<MvcExample.Models.Countries>
@html.Partial("_States", Model.States) // passing model of type IEnumerable<State> maybe?