传递到字典中的模型项是类型'',但是这个字典需要一个类型为'System.Collections.Generic.IEnumerable'的模型项。

时间:2015-12-06 15:32:18

标签: c# asp.net-mvc

我正在尝试创建一个部分视图来显示项目列表但仍然遇到此错误

  

传递到字典中的模型项的类型为“Revision.Models.GroupEvent”,但此字典需要类型为“System.Collections.Generic.GroupIEnumerable”1 [Revision.Models.Event]'的模型项。

这是我的家庭控制器

public class HomeController : Controller
{
    public RevisionDb db = new RevisionDb();
    EventViewModels evm = new EventViewModels();

    public ActionResult Index()
    {
        evm.Events = db.GroupEvents.ToList();
        return View(new GroupEvent() { EventPartialModel = evm.Events.ToList()} );
    }
}

这是我正在使用的视图模型

public class EventViewModels
{
    public int NumberofEvents { get; set; }
    public List<GroupEvent> Events { get; set; }
    public int EventCount { get; set; }
}

这是我的部分视图

@model IEnumerable<Revision.Models.GroupEvent>
@using Revision.Models
@if (Model != null)
{
    <div class="grid">
        <table cellspacing="0" width="80%">
            <thead>
                <tr>
                    <th>Title</th>
                    <th>Description</th>
                    <th>Date</th>
                </tr>
            </thead>
            <tbody>
                @foreach (var item in Model)
                {
                    <tr>
                        <td align="left">@item.EventTitle</td>
                        <td align="left">@item.EventDesc</td>
                        <td align="left">@item.EventDate</td>
                    </tr>
                }
            </tbody>
        </table>
    </div>
}

这是我的主要观点

@model IEnumerable<Revision.Models.GroupEvent>
@{
    ViewBag.Title = "Index";
}
<a href="~/Models/GroupEvents.cs">~/Models/GroupEvents.cs</a>
<div>
    @Html.Partial("EventsPartialView", Model)
</div>

1 个答案:

答案 0 :(得分:1)

return View()的参数为new GroupEvent。它应该是IEnumerable<GroupEvent>。然后你说你正在使用的ViewModel是EventViewModels,它没有被引用。

看起来应该是

MainClass:

return View(new EventViewModels{Events = evm.Events.ToList()})

的MainView

@model EventViewModels

@Html.Partial("EventsPartialView", Model.Events)