У меня была эта проблема раньше, и я исправил ее, заменив 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.