微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我不知道这个错误发生了什么:

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

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

@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(); 
}

}

任何想法我做错了什么?我试图按照本教程中的Repository模式的例子(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://www.jb51.cc/aspnet/246284.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐