传入字典的模型项的类型为'',但是这个字典需要一个类型为'System.Collections.Generic.IEnumerable?的模型项?

时间:2012-06-22 16:57:22

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

执行应用程序后,我得到“传递到字典中的模型项类型为'ClubStarterKit.Web.ViewData.Forum.NewMessageListViewData',但此字典需要类型为'System.Collections的模型项。 Generic.IEnumerable`1 [ClubStarterKit.Web.ViewData.Forum.NewMessageListViewData]”。

在视图中我有以下代码

          的         
    <%if ( User.Identity.IsAuthenticated) { %>

        <div class="fullwidth" id="message-add-block">
          <%using (Ajax.AsyncForm(Website.Shared.Views.DisplayTemplates.NewForumMessageList, new AsyncFormOptions(AsyncFormType.TargetUpdate, FormMethod.Post, "newMessages", targetUpdate: "messages", elementBlockId: "message-add-block", postRequestFunction: "afterMessageUpdate")))
          {%>
                <h3>Add New Message Final Test</h3>
                <br />
                <%: Html.Wysiwyg("message") %>
                <br />
               <%-- <input type="hidden" value="<%: Model.ThreadSlug %>" name="thread" />--%>
                <input type="hidden" value="-1" name="messageId" />
                <input type="submit" value="Add Message4 final" />
          <%}%>




          <br />
          <a id="newmessage" href="#">New message4 final</a>
        </div>

          <%}%>
控制器中的

代码是

 public virtual ActionResult Index()
    {
        ViewData.Title("New Message");
        return View(Views.List, new ClubStarterKit.Web.Infrastructure.Forum.NewMessageListAction().Execute());
    }

并在下面的屏幕截图中显示:

Error

传递到字典中的模型项的类型为“Myapplication.Web.ViewData.application.NewMessageListViewData”,但此字典需要类型为“System.Collections.Generic.IEnumerable”的模型项

请告知代码的哪个区域

1 个答案:

答案 0 :(得分:2)

您正在向View传递单个NewMessageListViewData,但它已被强类型化以仅接受实现IEnumerable<T>的对象,其中T是NewMessageListViewData。例如,List<NewMessageListViewData>可以使用。

正如评论中所提到的,我将首先查看ClubStarterKit.Web.Infrastructure.Forum.NewMessageListAction.Execute()的返回类型,或者,如果您只想在此视图中显示NewMessageListViewData的单个实例,您需要在视图中设置模型以反映该模型。