如何将局部视图显示为另一个视图的一部分?

时间:2018-01-01 21:08:18

标签: c# asp.net-mvc viewmodel partial-views

我想在主视图中显示基于此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]”。”串

你知道我该怎么办? 我想我必须改变模型的定义,另一方面我不知道另一种定义是如何可能的? 我搜索这个主题但是我找不到我遇到的确切问题。

0 个答案:

没有答案