Передача более чем одной модели в представление в ASP.NET MVC - PullRequest
0 голосов
/ 10 января 2019

Мне нужно передать две модели в одном виде, однако некоторые элементы имеют одинаковое имя.

У меня есть две модели Employee и HolidayRequestForm, и мне нужно использовать обе из них в одном представлении, которое будет страницей сведений для каждого сотрудника.

Вот мой Employee:

public partial class Employee
{ 
    public int EmployeeID { get; set; }
    public string FullName { get; set; }
    public string EmailID { get; set; }
    public string Password { get; set; }
    public System.DateTime StartDate { get; set; }
    public int RoleID { get; set; }
    public int ShiftID { get; set; }
    public int AreaID { get; set; }
    public int DisciplineID { get; set; }
    public int SiteID { get; set; }
    public int ALCategory { get; set; }
    public Nullable<int> HoursTaken { get; set; }
    public Nullable<int> AwardedLeave { get; set; }
    public Nullable<int> TotalHoursThisYear { get; set; }
    public int HoursCarriedForward { get; set; }
    public Nullable<int> EntitlementRemainingThisYear { get; set; }
    public string Comments { get; set; }

   }

Вот мой HolidayRequestForm:

public partial class HolidayRequestForm
{
    public int RequestID { get; set; }
    public int EmployeeID { get; set; }
    public System.DateTime StartDate { get; set; }
    public System.DateTime FinishDate { get; set; }
    public int HoursTaken { get; set; }
    public string Comments { get; set; }
    public int YearCreated { get; set; }
    public int MonthCreated { get; set; }
    public Nullable<int> DayCreated { get; set; }
    public Nullable<int> YearOfHoliday { get; set; }

}

Я пытался создать отдельную модель, которая содержит все элементы для использования в представлении, но я не уверен, как различать элементы с одинаковыми именами, например. Комментарии Возможно ли это сделать?

Я хотел бы использовать обе эти модели в своем представлении, так как я хотел бы создать страницу профиля сотрудника с их информацией вверху, отображающей информацию об их профиле, а затем праздники, которые они запросили, используя форму holidayrequest в таблице на внизу страницы.

1 Ответ

0 голосов
/ 10 января 2019

Напишите ViewModel, который будет содержать Employee и HolidayRequestForm, как указано ниже, а затем передайте ViewModel в представление:

public class EmployeeViewModel
{
    public Employee Employee {get; set;}

    public HolidayRequestForm HolidayRequestForm {get; set;}
}

Тогда в вашем методе действий:

public ActionResult EmployeeDetails(int id)
{
     Employee employee =  _dbContext.Employees.FirstOrDefault(emp => emp.EmployeeID == id);
     HolidayRequestForm holidayRequestForm =  _dbContext.HolidayRequestForms.FirstOrDefault(hrf => hrf.EmployeeID == id);

     EmployeeViewModel employeeViewModel = new EmployeeViewModel()
     {
        Employee = employee,
        HolidayRequestForm  = holidayRequestForm
     }

     return View(employeeViewModel);
}

Затем в представлении откройте свойства модели следующим образом:

@model EmployeeViewModel

<p>Full Name: @Model.Employee.FullName</p>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...