我想不通這是怎麼回事,出現此錯誤:MVC錯誤 - 傳遞到字典的模型項的類型爲「System.Collections.Generic.List`
The model item passed into the dictionary is of type 'System.Collections.Generic.List1[RepositoryExample.Employee]', but this dictionary requires a model item of type 'RepositoryExample.Models.IEmployeeManagerRepository'.`
我得到的錯誤時,我進入索引視圖。我從控制器添加了索引視圖,但沒有代碼。我正在使用Linq to SQL。
@model RepositoryExample.Models.IEmployeeManagerRepository
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
這是我的代碼:
EmployeeController.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();
}
}
IEmploy eeManagerRepository.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();
}
}
任何想法我做錯了什麼?我試圖按照本教程中的Repository模式示例:http://www.asp.net/mvc/tutorials/iteration-4-make-the-application-loosely-coupled-cs。
好吧,我這樣做,但現在我得到一個新的錯誤:描述:在編譯服務此請求所需的資源編譯過程中發生錯誤。請查看以下具體的錯誤細節並適當修改您的源代碼。 編譯器錯誤消息:CS0234:名稱空間'RepositoryExample.Models'中不存在類型或名稱空間名稱'Employee'(缺少程序集引用嗎?) – MikeB55
@ MikeB55,好的,使用正確的命名空間,其中此'Employee '類被定義。 '@model IEnumerable'。我已經更新了我的答案。 –
優秀。非常感謝。過去3個小時我一直在尋找這個錯誤。按照您的建議,通過添加@model IEnumerable來解決問題。 –
MikeB55