字典需要一个类型为'System.Collections.Generic.IEnumerable`1 [ShimbaSchool.Models.EventMessageDepartment]&

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字典需要一个类型为'System.Collections.Generic.IEnumerable`1 [ShimbaSchool.Models.EventMessageDepartment]&相关的知识,希望对你有一定的参考价值。

我尝试使用列表脚手架从数据库中获取数据时遇到错误。错误和代码如下。

我的型号:

namespace ShimbaSchool.Models

    [Table("tblStaff")]
    public class Staff
    
        [Key]
        public int StaffId  get; set; 
        [Required]
        [DisplayName("Upload Image")]
        public string ImagePath  get; set; 
        [Required,MinLength(2),DisplayName("Staff Name")]
        public string StaffName  get; set; 
        [Required,MaxLength(250)]
        [DisplayName("Teacher's Subject")]
        public string StaffSpecialty  get; set; 
        [NotMapped]
        public HttpPostedFileBase ImageFile  get; set; 

    

我的控制器:

namespace ShimbaSchool.Controllers

    public class StaffController : Controller
    
        EventMessageDepartmentContext db = new EventMessageDepartmentContext();
        public ActionResult Index()
        
            return View(db.StaffTable.ToList());
        
    

风景:

@model IEnumerable<ShimbaSchool.Models.Staff>

@
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_MyLayout.cshtml";


<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.ImagePath)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.StaffName)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.StaffSpecialty)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) 
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.ImagePath)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.StaffName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.StaffSpecialty)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new  id=item.StaffId ) |
            @Html.ActionLink("Details", "Details", new  id=item.StaffId ) |
            @Html.ActionLink("Delete", "Delete", new  id=item.StaffId )
        </td>
    </tr>


</table>

在执行时我得到错误:

传递到字典中的模型项的类型为'System.Collections.Generic.List 1 [ShimbaSchool.Models.Staff]',但此字典需要类型为'System.Collections.Generic.IEnumerable 1的模型项[ShimbaSchool.Models .EventMessageDepartment]”。

请帮我修复这种情况并理解逻辑,以便下次没有。添加我使用相同的模型与另一个控制器,虽然视图是在同一个项目的不同布局上呈现的,但它的工作正常。

答案

实际上,从控制器方法传递到视图的列表是List of EventMessageDepartment,而不是List of Staff。请正确检查并将控制器方法中的List of Staff传递给视图。

如果您确保传递给视图的数据是List<ShimbaSchool.Models.Staff>,那么请检查您的Layout.cshtml页面。可能有@model IEnumerable<EventMessageDepartment>被引用。

另一答案

你试过以下吗?

    public ActionResult Index()
    
        return View(db.StaffTable.AsEnumerable());
    

以上是关于字典需要一个类型为'System.Collections.Generic.IEnumerable`1 [ShimbaSchool.Models.EventMessageDepartment]&的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据库表中的内容导入到python字典,建了一个表,想把表中的内容放到python的字典中

csharp 集合的并发,避免使用传统的锁(lock)机制等方式来处理并发访问集合。因此当有多个线程并发访问集合时,应首先考虑使用这些类代替System.Collections和System.Coll

python基础-字典

列表,字典,元组,集合内置方法

Python 字典(dic)操作

python字典怎么排序