Извинения, если это довольно простой вопрос или я не использую лучшие методы в своем коде C #, так как я довольно новичок в MVC и C #.
Я использую шаблон хранилища для вывода списка транспортных средств из таблицы в index.html. В таблице транспортных средств есть поле с именем Тип одного символа, которое является внешним ключом таблицы транспортных средств, в котором содержится описание типа.
У меня есть модель представления автомобиля и описание типа.
public class VehicleViewModel
{
public Vehicle Vehicle { get; set; }
public string TypeDescription { get; set; }
}
В VehicleController для обработки индексной страницы по умолчанию я получаю список всех транспортных средств в таблице и использую цикл foreach для обхода транспортных средств, формирующих список VehicleViewModel. Я ищу тип для каждого транспортного средства и добавляю TypeDescription на ходу. Проблема в том, что каждый элемент в моем списке всегда обновляется до последнего описания, и я не могу понять, почему?
public async Task<IActionResult> Index()
{
IEnumerable<Vehicle> vehicles;
vehicles = await _vehicleRepository.ListVehiclesAsync();
List<VehicleViewModel> vehiclesView = new List<VehicleViewModel>();
VehicleViewModel vehicleView = new VehicleViewModel();
foreach (Vehicle vehicle in vehicles)
{
vehicleView.Vehicle = vehicle;
vehicleView.TypeDescription = await _vehicleTypeRepository.GetDescription(vehicle.Type);
vehiclesView.Add(vehicleView);
}
return View("~/Views/System/Vehicle/Index.cshtml", vehiclesView);
}
Например, у меня есть три типа транспортных средств: «Ван» (V), «Автомобиль» (С), «Лимузин» (L). Когда я делаю шаг по коду, возвращается правильное описание и присваивается vehicleType.TypeDescription. При добавлении транспортного средства в Список транспортных средств все описания типов устанавливаются на одно и то же значение. Почему?
Финальный список:
VehicleView[0].Vehicle.VehicleReg = 'VAN 123'
VehicleView[0].Vehicle.Type = 'V'
VehicleView[0].Vehicle.Make = 'Ford'
VehicleView[0].Vehicle.Model = 'Transit'
VehicleView[0].TypeDescription = 'Limo' (should be 'Van' but overwritten to latest value in Add)
VehicleView[1].Vehicle.VehicleReg = 'CAR 456'
VehicleView[1].Vehicle.Type = 'C'
VehicleView[1].Vehicle.Make = 'Ford'
VehicleView[1].Vehicle.Model = 'Focus'
VehicleView[1].TypeDescription = 'Limo' (should be 'Car' but overwritten to latest value in Add)
VehicleView[2].Vehicle.VehicleReg = 'LIM 789'
VehicleView[2].Vehicle.Type = 'L'
VehicleView[2].Vehicle.Make = 'Ford'
VehicleView[2].Vehicle.Model = 'Stretch'
VehicleView[2].TypeDescription = 'Limo' (correct because it's the last record)
Любая помощь очень ценится.