no puedo averiguar lo que está pasando con este error:error MVC - El elemento de modelo pasado en el diccionario es del tipo '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'.`
me sale el error cuando Voy a la vista de índice. Agregué la Vista de índice desde el controlador pero no hay código en ella. Estoy usando Linq para SQL.
@model RepositoryExample.Models.IEmployeeManagerRepository
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
Este es mi código:
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();
}
}
Alguna idea de lo que estoy haciendo mal? Estoy tratando de seguir el ejemplo en el patrón Repositorio en este tutorial: http://www.asp.net/mvc/tutorials/iteration-4-make-the-application-loosely-coupled-cs.
Ok, lo hice pero ahora recibo un nuevo error: Descripción: Se produjo un error durante la compilación de un recurso requerido para atender esta solicitud. Revise los siguientes detalles de error específicos y modifique su código fuente de manera adecuada. Mensaje de error del compilador: CS0234: El tipo o el nombre del espacio de nombres 'Employee' no existe en el espacio de nombres 'RepositoryExample.Models' (¿falta una referencia de ensamblado?) – MikeB55
@ MikeB55, OK, use el espacio de nombres correcto donde aparece 'Employee 'clase está definida. '@model IEnumerable'. He actualizado mi respuesta. –
Excelente. Muchas gracias. He estado buscando este error durante las últimas 3 horas. Lo tengo que trabajar ahora agregando @model IEnumerable como sugirió. –
MikeB55