asp.net-mvc – MVC错误 – 传入字典的模型项目的类型为“System.Collections.Generic.List”

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – MVC错误 – 传入字典的模型项目的类型为“System.Collections.Generic.List”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我不知道这个错误发生了什么:

传入字典的模型项目的类型为“System.Collections.Generic.List1 [RepositoryExample.Employee]”,但是该字典需要一个类型为“RepositoryExample.Models.IEmployeeManagerRepository”的模型项.

当我转到索引视图时,我收到错误.我从控制器添加了索引视图,但没有代码.我使用Linqsql.

  1. @model RepositoryExample.Models.IEmployeeManagerRepository
  2.  
  3. @{
  4. ViewBag.Title = "Index";
  5. }
  6.  
  7. <h2>Index</h2>@H_404_7@
  8. 这是我的代码

  9. EmployeeController.cs

  10. // GET: /Employee/
  11.     public ActionResult Index()
  12.     {
  13.         return View(_repository.ListEmployees());
  14.     }@H_404_7@ 
  15.  

    LinqEmployeeManagerRepository.cs

  16.   
  17.  
    public class LinqEmployeeManagerRepository: RepositoryExample.Models.IEmployeeManagerRepository
  18. {
  19.     private DeptDirectoryDataClassesDataContext _db = new DeptDirectoryDataClassesDataContext();
  20.     public Employee GetEmployee(string UserName)
  21.     {
  22.         return (from e in _db.Employees where e.UserName == UserName select e).FirstOrDefault(); 
  23.     }
  24.     public IEnumerable<Employee> ListEmployees()
  25.     {
  26.         return _db.Employees.ToList();
  27.     }
  28.     public Employee CreateEmployee(Employee employeeToCreate)
  29.     {
  30.         _db.Employees.InsertOnSubmit(employeeToCreate);
  31.         _db.SubmitChanges();
  32.         return employeeToCreate; 
  33.     }
  34.     public Employee EditEmployee(Employee employeeToEdit)
  35.     { 
  36.         var OriginalEmployee = GetEmployee(employeeToEdit.UserName);
  37.         _db.Employees.Attach(employeeToEdit,OriginalEmployee);
  38.         _db.SubmitChanges();
  39.         return employeeToEdit; 
  40.     }
  41.     public void DeleteEmployee(Employee employeeToDelete)
  42.     {
  43.         var OriginalEmployee = GetEmployee(employeeToDelete.UserName);
  44.         _db.Employees.DeleteOnSubmit(OriginalEmployee);
  45.         _db.SubmitChanges(); 
  46.     }
  47. }@H_404_7@ 
  48.  

    IEmployeeManagerRepository.cs

  49.   
  50.  
    namespace RepositoryExample.Models
  51. {
  52. public interface IEmployeeManagerRepository
  53. {
  54.     Employee CreateEmployee(Employee employeeToCreate);
  55.     void DeleteEmployee(Employee employeeToDelete);
  56.     Employee EditEmployee(Employee employeeToUpdate);
  57.     Employee GetEmployee(string UserName);
  58.     IEnumerable<Employee> ListEmployees(); 
  59. }@H_404_7@ 
  60.  

    }

  61.  

    任何想法我做错了什么?我试图按照本教程中的Repository模式的例子(http://www.asp.net/mvc/tutorials/iteration-4-make-the-application-loosely-coupled-cs)

解决方法

在您的Index.cshtml视图的顶部替换:
  1. @model RepositoryExample.Models.IEmployeeManagerRepository@H_404_7@
  2. 有:

  3. @model IEnumerable<RepositoryExample.Employee>@H_404_7@ 
  4.  

    _repository.ListEmployees()方法返回IEnumerable< Employee>这就是你在这里的观点:

  5.   
  6.  
    return View(_repository.ListEmployees());@H_404_7@ 
  7.  

    这就是您在视图中的@model指令中应该使用的类型.

猜你在找的asp.Net相关文章