Asp.net-Mvc
MVC 錯誤 - 傳入字典的模型項的類型為“System.Collections.Generic.List”
我無法弄清楚這個錯誤是怎麼回事:
傳入字典的模型項的類型為 ‘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在視圖中的指令中使用的類型。