将正确的模型传递给局部视图

时间:2010-12-13 19:48:33

标签: c# .net model-view-controller partial-views

我一直在看这个错误很长一段时间,似乎无法弄清楚我可能做错了什么。

我有一个局部视图,如下所示:

        <% Html.RenderPartial("~/Views/ForumPosts/ForumPostCreateForm.ascx", ViewData.Model); %>

部分视图的顶部如下所示:

<%@ Control Language="C#" AutoEventWireup="true" Inherits="System.Web.Mvc.ViewUserControl<xxxx.Web.Controllers.ForumThreadsController.ForumThreadFormViewModel>" %>

我收到的错误如下:

传递到字典中的模型项的类型为“xxx.Core.ForumThread”,但此字典需要类型为“xxx.Web.Controllers.ForumThreadsController + ForumThreadFormViewModel”的模型项。 < / p>

如果没有弄错,两者都会采用名为ForumThread的模型,但显然我一定错过了什么。

3 个答案:

答案 0 :(得分:4)

您必须确保将模型传递到局部视图中的内容, 尝试将模型的新对象传递给局部视图

答案 1 :(得分:3)

  

如果没有错的话,两者都会接受   模型叫做ForumThread ......

根据您发布的代码,部分视图需要xxxx.Web.Controllers.ForumThreadsController.ForumThreadFormViewModel。更改部分视图的顶部,或找到某种方法在ForumThreadFormViewModel对象上传递ForumThread

另一种解决方案是使用RenderAction允许操作生成您想要的ForumThreadFormViewModel

答案 2 :(得分:1)

请确保您的模型类型为xxxx.Web.Controllers.ForumThreadsController.ForumThreadFormViewModel

要检查这一点,请查看控制器中返回View的位置。 您放入方法的对象应为ForumThreadFormViewModel

类型