字典需要类型为'System.Collections.Generic.IEnumerable'1 [ShimbaSchool.Models.EventMessageDepartment]'的模型项

时间:2019-02-25 06:14:15

标签: c# sql-server asp.net-mvc entity-framework

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

我的模型:

@IBAction func create(_ sender: Any) {
if (addName.text != "" && addDescription.text != "") {
    items.append(addName.text!)
    addName.text = ""
    givenDescription.append(addDescription.text!)
    addDescription.text = ""
}
self.navigationController?.popViewController(animated: true)

我的控制器:

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());
        }
    }
}

执行时出现错误:

  

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

请帮助我解决这种情况并了解逻辑,以便下次再也没有。另外,尽管视图是在同一项目的不同布局上呈现的,但我将同一模型与另一个控制器一起使用,并且可以正常工作。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

您尝试以下吗?

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