Мне нужно иметь представление, в котором отображаются имя сотрудника и фамилия сотрудника и связанного с ним сотрудника.ASP.NET MVC Pass Несколько моделей для просмотра с контроллера
У меня есть 2 модели они являются следующие:
public class Employee
{
public int EmployeeID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Department { get; set; }
public int SupervisorID { get; set; }
public virtual ICollection<Supervisor> Supervisor { get; set; }
}
public class Supervisor
{
public int SupervisorID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Phone { get; set; }
public string Email { get; set; }
public string Department { get; set; }
public virtual Employee Employee { get; set; }
}
Чтобы отобразить необходимые данные, которые я создал другую модель:
public class EmployeeSupervisor
{
public int EmployeeID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Department { get; set; }
public string SupFirstName { get; set; }
public string SupLastName { get; set; }
public string SupPhone { get; set; }
public string SuoEmail { get; set; }
public string SupDepartment { get; set; }
}
и в деталях действия контроллера я следующее :
Employee employee = db.Employees.Find(id);
Supervisor supervisor = db.Supervisors.Find(employee.SupervisorID);
EmployeeSupervisor es = new EmployeeSupervisor
{
EmployeeID = employee.EmployeeID,
Department = employee.Department,
FirstName = employee.FirstName,
LastName = employee.LastName,
SupFirstName = supervisor.FirstName,
SupLastName = supervisor.LastName,
SuoEmail = supervisor.Email,
SupPhone = supervisor.Phone,
SupDepartment = supervisor.Department
};
return View(es);
Тогда в представлении меня
@model TimeOffV3.Models.EmployeeSupervisor
, а затем, наконец, я следующий в представлении
@Html.DisplayFor(model => model.FirstName)
@Html.DisplayFor(model => model.LastName)
@Html.DisplayFor(model => model.SupFirstName)
@Html.DisplayFor(model => model.SupLastName)
Когда я выполнить эту задачу, как описано выше, с моделью класса EmployeeSupervisor, рамочная объект создает соответствующую таблицу EmployeeSupervisor в базе данных (как ожидается). Это заставляет меня думать, что я делаю это неправильно, поскольку я не могу себе представить, что каждый раз, когда я хочу отображать данные из двух разных моделей, мне нужно создать новую соответствующую модель и таблицу.
Как я это сделал? Должен ли я иметь доступ к информации супервизора с использованием свойства навигации, определенного в классе Employee? Могу ли я передавать несколько моделей, поэтому мне не нужно создавать модель, содержащую информацию из двух отдельных моделей?
Для меня сходства настолько близки, что я сделал бы модель сотрудника и имел самонаводящее поле EmployeeID в этой модели, которое взяло идентификатор руководителя сотрудника. – JonH