我使用Entity Framework Code First方法创建了MVC3应用程序。我的模型非常简单:
public class Employee
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int YearsAtCompany { get; set; }
}
和上下文类是
public class EmployeeDB : DbContext
{
public DbSet<Employee> Employees { get; set; }
}
和控制器看起来像这样:
EmployeeDB context = new EmployeeDB();
public ActionResult Index()
{
return View(context.Employees);
}
}
我创建了EmployeesDb.mdf和Employee表。
但是我收到了这个错误:
The model item passed into the dictionary is of type 'System.Data.Entity.DbSet`1[DFEmployees.Models.Employee]', but this dictionary requires a model item of type 'DFEmployees.Models.Employee'.
[更新]
@model DFEmployees.Models.Employee
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
请建议解决方案。
答案 0 :(得分:1)
看起来你的观点正在等待一个单一的员工,你正在试图用一个DBSet员工来填补这个观点。
要解决此问题,您可以将视图的@model设置为IEnumerable员工,或者只向视图发送一名员工,具体取决于您在视图中显示的内容。
编辑:我认为此问题与前一个问题无关。检查此链接,我希望它可以帮助您:LINK
答案 1 :(得分:0)
您的控制器操作会返回员工列表,以便在视图中分别调整您的模型:
@model IEnumerable<DFEmployees.Models.Employee>
或者,如果您想使用单个员工,请确保将单个员工传递给视图:
public ActionResult Index()
{
return View(context.Employees.FirstOrDefault());
}
然后你可以:
@model DFEmployees.Models.Employee