首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >局部视图中不同模型类型的问题

局部视图中不同模型类型的问题
EN

Stack Overflow用户
提问于 2011-09-03 18:34:14
回答 1查看 12.7K关注 0票数 5

我有一个(剃刀)页面,其中包含5个不同的部分视图。每个局部视图负责数据库中的一些数据。在母版页中,我使用一个模型对象,但对于局部视图,我使用不同模型对象。问题是,当我在部分视图中设置模型对象时,我的应用程序会中断,并显示以下错误:传递到字典中的模型项属于'MyProject.WebUI.Models.BigPageViewModel', but this dictionary requires a model item of type 'MyProject.WebUI.Models.StatisticsViewModel'.类型

下面是代码:这是包含部分视图的大页面:

代码语言:javascript
运行
复制
@model MyProject.WebUI.Models.BigPageViewModel
@{
    Layout = "../Shared/_BigPage.cshtml";
}
...
@{Html.RenderPartial("../Data/StatisticsFeed");}
...

这是控制器代码。对于这个方法,我创建了应该在大页面中呈现的局部视图。

代码语言:javascript
运行
复制
public ActionResult StatisticsFeed()
        {
            StatisticsViewModel cs = new StatisticsViewModel();
            cs.TotalData = (new StatisticsRepository()).GetStatisticCompleteData(1);
            return View(cs);
        }

这是部分视图中的代码:

代码语言:javascript
运行
复制
@model MyProject.WebUI.Models.StatisticsViewModel
...

我使用了'RenderAction‘方法而不是'RenderPartial’方法,它返回值,但返回给我两个结果,一个有数据,一个没有数据,这一定是什么愚蠢的错误……

代码语言:javascript
运行
复制
public ActionResult StatisticsFeed()
        {
          StatisticsViewModel cs = new StatisticsViewModel();
                cs.TotalData = (new StatisticsRepository()).GetStatisticCompleteData(1);

            cs.TotalCitizns = 569;
            return View(cs);
        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-03 18:40:47

您需要使用RenderPartial方法的第二个参数显式指定传递给partial的模型。如果你不指定它,父模型就会被传递,所以你会得到一个异常:

代码语言:javascript
运行
复制
@{Html.RenderPartial("../Data/StatisticsFeed", Model.SomePropertyOfTypeStatisticsViewModel);}

另一种可能是使用RenderAction

代码语言:javascript
运行
复制
@{Html.RenderAction("StatisticsFeed", "ControllerName");}

这将调用StatisticsFeed控制器操作,该操作本身将从数据库获取模型并呈现结果。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7292590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档