Asp.net-Mvc

MVC 錯誤 - 傳入字典的模型項的類型為“System.Collections.Generic.List”

  • June 20, 2019

我無法弄清楚這個錯誤是怎麼回事:

傳入字典的模型項的類型為 ‘System.Collections.Generic.List1

$$ RepositoryExample.Employee $$’,但此字典需要“RepositoryExample.Models.IEmployeeManagerRepository”類型的模型項。

當我轉到索引視圖時出現錯誤。我從控制器添加了索引視圖,但其中沒有程式碼。我正在使用 Linq to SQL。

@model RepositoryExample.Models.IEmployeeManagerRepository

@{
ViewBag.Title = "Index";
}

<h2>Index</h2>

這是我的程式碼:

員工控制器.cs

   // GET: /Employee/
   public ActionResult Index()
   {
       return View(_repository.ListEmployees());
   }

LinqEmployeeManagerRepository.cs

public class LinqEmployeeManagerRepository: RepositoryExample.Models.IEmployeeManagerRepository
{
   private DeptDirectoryDataClassesDataContext _db = new DeptDirectoryDataClassesDataContext();

   public Employee GetEmployee(string UserName)
   {
       return (from e in _db.Employees where e.UserName == UserName select e).FirstOrDefault();
   }

   public IEnumerable<Employee> ListEmployees()
   {
       return _db.Employees.ToList();
   }

   public Employee CreateEmployee(Employee employeeToCreate)
   {
       _db.Employees.InsertOnSubmit(employeeToCreate);
       _db.SubmitChanges();
       return employeeToCreate; 
   }

   public Employee EditEmployee(Employee employeeToEdit)
   { 
       var OriginalEmployee = GetEmployee(employeeToEdit.UserName);
       _db.Employees.Attach(employeeToEdit, OriginalEmployee);
       _db.SubmitChanges();
       return employeeToEdit; 
   }

   public void DeleteEmployee(Employee employeeToDelete)
   {
       var OriginalEmployee = GetEmployee(employeeToDelete.UserName);
       _db.Employees.DeleteOnSubmit(OriginalEmployee);
       _db.SubmitChanges();     
   }
}

IEmployeeManagerRepository.cs

namespace RepositoryExample.Models
{
   public interface IEmployeeManagerRepository
   {
       Employee CreateEmployee(Employee employeeToCreate);
       void DeleteEmployee(Employee employeeToDelete);
       Employee EditEmployee(Employee employeeToUpdate);
       Employee GetEmployee(string UserName);
       IEnumerable<Employee> ListEmployees(); 
   }
}

任何想法我做錯了什麼?我正在嘗試遵循本教程中關於儲存庫模式的範例:http ://www.asp.net/mvc/tutorials/iteration-4-make-the-application-loosely-coupled-cs 。

在您的Index.cshtml視圖頂部替換:

@model RepositoryExample.Models.IEmployeeManagerRepository

和:

@model IEnumerable<RepositoryExample.Employee>

_repository.ListEmployees()方法返回IEnumerable<Employee>,這就是您在此處傳遞給視圖的內容:

return View(_repository.ListEmployees());

這就是您應該@model在視圖中的指令中使用的類型。

引用自:https://stackoverflow.com/questions/7573020