asp.net-mvc – 局部视图中不同模型类型的问题
发布时间:2020-12-16 07:09:55 所属栏目:asp.Net 来源:网络整理
导读:我有一个(剃刀)页面,包含5个不同的部分视图.每个局部视图负责来自数据库的一些数据.在该母版页中,我使用一个模型对象,但对于部分视图,我使用不同的模型对象.问题是当我在局部视图中设置模型对象时,我的应用程序会出现以下错误: 传递到字典中的模型项的类型
我有一个(剃刀)页面,包含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); } 这是部分视图中的代码: @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); } 解决方法
您需要使用RenderPartial方法的第二个参数明确指定传递给partial的模型.如果您没有指定它,则会传递父模型,因此会得到以下异常:
@{Html.RenderPartial("../Data/StatisticsFeed",Model.SomePropertyOfTypeStatisticsViewModel);} 另一种可能性是使用RenderAction: @{Html.RenderAction("StatisticsFeed","ControllerName");} 这将调用StatisticsFeed控制器操作,该操作本身将从数据库中获取模型并呈现结果. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- asp.net-mvc – NUnit中的MbUnit的行属性?
- asp.net-mvc – MVC数据类型货币触发器数字小键盘
- asp.net-mvc – 我们可以在Controller中创建静态
- asp.net – 在编辑视图中持久保存实体密钥的更安
- asp.net – 为什么在FireFox中禁用时链接按钮不会
- asp.net通过kerberos集成windows身份验证到sql s
- asp.net – 编辑不适用于Html.DropDownList和@cl
- asp.net – XMLHTTP请求的经典ASP错误
- 如果复选框被选中,ASP.NET – 需要一个文本框
- asp.net-mvc – 使用mvc 4 razor引擎显示3个文本
热点阅读