执行应用程序后,我得到“传递到字典中的模型项类型为'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());
}
并在下面的屏幕截图中显示:
传递到字典中的模型项的类型为“Myapplication.Web.ViewData.application.NewMessageListViewData”,但此字典需要类型为“System.Collections.Generic.IEnumerable”的模型项
请告知代码的哪个区域
答案 0 :(得分:2)
您正在向View传递单个NewMessageListViewData,但它已被强类型化以仅接受实现IEnumerable<T>
的对象,其中T是NewMessageListViewData。例如,List<NewMessageListViewData>
可以使用。
正如评论中所提到的,我将首先查看ClubStarterKit.Web.Infrastructure.Forum.NewMessageListAction.Execute()的返回类型,或者,如果您只想在此视图中显示NewMessageListViewData的单个实例,您需要在视图中设置模型以反映该模型。