Передача сложной модели контроллеру с. net core 3 mvc - PullRequest
0 голосов
/ 28 мая 2020

У меня была эта проблема раньше, и я исправил ее, заменив foreach l oop на For l oop. Но с. net core 3 это больше не работает. Дочерний объект внутри родительского объекта возвращает null.

В основном я разрабатываю систему бронирования тренингов для выбранных сотрудников. У меня есть список сотрудников с флажком выбора. И TraineeList для сохранения выбранного сотрудника из списка сотрудников

public class TraineeListVM
{
    public List<TraineeListModel> TraineeList { get; set; }
    public List<BookingEmpVM> EmployeeList { get; set; }
    public BookingModel BookingModel { get; set; }
}

public class BookingEmpVM
{
    public EmployeeModel EmployeeModel { get; set; }
    public DateTime TrainingExpData { get; set; }
    public bool EmpSelected { get; set; } = false;
}

Для заполнения данных

        public IActionResult Index(int bookingID)
    {
        List<TraineeListModel> Tlist = traineeListRepository.TraineeLists.Where(b => b.BookingID == bookingID).ToList();
        List<EmployeeModel> EmpList = employeeRepository.EmployeeList.Where(e => e.EmployeeStatus == true).ToList();
        List<BookingEmpVM> EmpListWithExpDate = new List<BookingEmpVM>();
        int i = 0;

        foreach (var emp in EmpList)
        {
            i++;
            EmpListWithExpDate.Add(new BookingEmpVM
            {
                EmployeeModel = new EmployeeModel
                {
                    EmployeeID = emp.EmployeeID,
                    Name = emp.FullName,
                    ProjectModel = emp.ProjectModel
                },
                EmpSelected = false,
                TrainingExpData = DateTime.Now
            });

            if (i == 30) break;
        }
        return View(new TraineeListVM
        {
            TraineeList = Tlist,
            EmployeeList = EmpListWithExpDate,
            BookingModel = bookingRepository.BookingList.FirstOrDefault(b => b.BookingID == bookingID)
        });
    }

в cs html

 @for (int i = 0; i < Model.EmployeeList.Count(); i++)
 {
     <tr>
        <td>
             @Model.EmployeeList[i].EmployeeModel.EmployeeID
        </td>
        <td>
             @Model.EmployeeList[i].EmployeeModel.FullName
        </td>
        <td>                                                    
             @Model.EmployeeList[i].EmployeeModel.ProjectModel.ProjectName
        </td>
        <td>
              @Model.EmployeeList[i].TrainingExpData.ToShortDateString()
        </td>
        <td>
               <input asp-for="@Model.EmployeeList[i].EmpSelected" />
        </td>
      </tr>
    }

Количество возвращенных EmployeeList является правильным, но EmployeeModel внутри EmployeeList имеет значение null. enter image description here

...