我有一个页面(razor),其中包含5个不同的部分视图。每个部分视图负责一些来自数据库的数据。在该主页面中,我使用了一个模型对象,但是对于部分视图,我使用不同的模型对象。问题是,在部分视图中设置模型对象时,我的应用程序会出现以下错误:
向字典传递的模型项的类型为 'MyProject.WebUI.Models.BigPageViewModel',但此字典需要一个类型为 'MyProject.WebUI.Models.StatisticsViewModel' 的模型项。
以下是代码: 这是包含部分视图的大页面:
这是控制器代码。对于这个方法,我创建了一个部分视图,应该在大页面中呈现。
以下是代码: 这是包含部分视图的大页面:
@model MyProject.WebUI.Models.BigPageViewModel
@{
Layout = "../Shared/_BigPage.cshtml";
}
...
@{Html.RenderPartial("../Data/StatisticsFeed");}
...
这是控制器代码。对于这个方法,我创建了一个部分视图,应该在大页面中呈现。
public ActionResult StatisticsFeed()
{
StatisticsViewModel cs = new StatisticsViewModel();
cs.TotalData = (new StatisticsRepository()).GetStatisticCompleteData(1);
return View(cs);
}
以下是Partial View中的代码:
@model MyProject.WebUI.Models.StatisticsViewModel
...
我使用了'RenderAction'方法而不是'RenderPartial'方法,它返回了值但是给我返回了两个结果,一个有数据,一个没有,这一定是某个愚蠢的错误...
public ActionResult StatisticsFeed()
{
StatisticsViewModel cs = new StatisticsViewModel();
cs.TotalData = (new StatisticsRepository()).GetStatisticCompleteData(1);
cs.TotalCitizns = 569;
return View(cs);
}
StatisticsViewModel
的一个实例传递给你的部分视图,因为这是它所期望的。你存储它的位置是另一个问题。它确实可以是你主视图模型的属性。你也可以传递一个新的实例:new StatisticsViewModel()
。 - Darin Dimitrov@{Html.RenderAction("StatisticsFeed", "ControllerName");}
。这将经过控制器动作并呈现部分视图。我也更新了我的答案,包括一个示例。 - Darin Dimitrovreturn PartialView(cs);
。 - Darin Dimitrov