我想在主视图中显示基于此ViewModel的局部视图 主视图使用ViewModel中的所有模型,但部分视图使用第一个模型。
public class EventManagementViewModel
{
public IEnumerable<BPMSPARS.Models.DomainModels.CalendarEvent> Eventslist { get; set; }
public BPMSPARS.Models.DomainModels.CalendarEvent Event { get; set; }
public BPMSPARS.Models.DomainModels.EventsUser EventUser { get; set; }
}
控制器中的我有这个代码:
[HttpGet]
public ActionResult Event()//partial view
{
EventManagementViewModel VM = new EventManagementViewModel();
return PartialView(VM.Eventslist);
}
public ActionResult EventCalendar()//main view
{
EventManagementViewModel VM = new EventManagementViewModel();
return View(VM);
}
在mainview中我有这段代码:
@model BPMSPARS.ViewModels.EventManagementViewModel
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
//..
<div>
@Html.Partial("Event",Model.Eventslist)
</div>
在局部视图中我有这段代码:
@model IEnumerable<BPMSPARS.Models.DomainModels.CalendarEvent>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.EventName)
</th>
<th>
@Html.DisplayNameFor(model => model.EventColor)
</th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.EventName)
</td>
<td>
@Html.DisplayFor(modelItem => item.EventColor)
</td>
</tr>
}
</table>
但是当我运行主视图时,我遇到了这个错误:
消息“传递到字典中的模型项的类型为'BPMSPARS.ViewModels.EventManagementViewModel',但此字典需要类型为'System.Collections.Generic.IEnumerable`1 [BPMSPARS.Models]的模型项。 DomainModels.CalendarEvent]”。”串
你知道我该怎么办? 我想我必须改变模型的定义,另一方面我不知道另一种定义是如何可能的? 我搜索这个主题但是我找不到我遇到的确切问题。