我需要一個顯示員工姓名和員工關聯的主管姓名的視圖。ASP.NET MVC將多個模型傳遞給控制器查看
我有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對應的表(如預期)。這導致我相信我做錯了,因爲我無法想象每次我想要顯示來自2個不同模型的數據時,我需要創建一個新的對應模型和表格。
我完成這個的方式正確嗎?我應該能夠使用Employee類中定義的導航屬性訪問管理員信息嗎?我可以傳遞多個模型,因此我不必創建包含來自2個獨立模型的信息的模型?
對我來說,相似程度非常接近,我會製作一個員工模型,並在此模型中擁有一個自我引用的EmployeeID字段,該字段包含該員工的主管的ID。 – JonH