asp.net-mvc - MVC 错误 - 传递到字典中的模型项的类型为 'System.Collections.Generic.List`

标签 asp.net-mvc asp.net-mvc-3 razor ienumerable

我无法弄清楚这个错误是怎么回事:

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'.`

当我进入索引 View 时,出现错误。我从 Controller 添加了索引 View ,但其中没有代码。我正在使用 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();     
    }
}

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>这就是您要传递给此处 View 的内容:

return View(_repository.ListEmployees());

这就是您应该在 @model 中使用的类型在您看来是指令。

关于asp.net-mvc - MVC 错误 - 传递到字典中的模型项的类型为 'System.Collections.Generic.List`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7573020/

相关文章:

c# - Bootstrap 不适用于 MVC4

c# - 对列表项使用标签帮助器验证

asp.net-mvc - 如何更改使用 Razor 图表助手创建的图表中的图表参数(例如饼图切片颜色)?

javascript - Asp.Net MVC Ajax View 模型未更新

asp.net-mvc-3 - 具有最佳实践的示例N层ASP.NET MVC3应用程序(使用EF 4.1)

c# - 我如何检查用户是否处于具有 MVC4 简单成员资格的几个不同角色中的任何一个?

asp.net-mvc - 如何告诉 Resharper 在自定义位置查看局部 View ?

c# - 如何使用 Audit.Net 扩展 Audit.Mvc 设置 AuditEvent 的目标对象

c# - Html.CheckBoxFor() 检查 ASP.Net MVC 2 中的问题

c# - EF 4 : How to properly update object in DbContext using MVC with repository pattern