Привет всем! есть базовый класс с именем Vehicle, и у меня есть все свойства, общие для всех транспортных средств, и у меня есть несколько производных классов, называемых Car, Jeep, которые являются производными от Vehicle и добавляют дополнительные свойства
Ex:
public class Vehicle
{
public int Color { get; set; }
public double Cost { get; set; }
}
public class Car : Vehicle
{
public SelectListItem Option { get; set; }
}
У меня есть класс Page, в котором У меня есть список таких транспортных средств
public class Page
{
public List<Vehicle> vehicles { get; set; }
}
. Мое представление строго относится к классу Page, поэтому, на мой взгляд, я перебираю все транспортные средства для отображения на странице, подобной этой. Этот код находится внутри @using (Html.BeginForm. ())поэтому мы отправляем назад выбор пользователя
for(int i=0;i<Model.Vehicles.Count;i++)
{
<div id="Question">
@{
@Html.EditorFor(m => m.Vehicle[i], VehicleConstants.GetTemplateName(Model.Questions[i]));
}
<br />
</div>
}
Я использую один шаблон редактора для каждого типа транспортного средства, поэтому вызов функции VehicleConstants.GetTemplateName просто возвращает имя используемого шаблона в зависимости от типа транспортного средства
Этот шаблон просто записывает свойства класса автомобиля или класса джипа (De класс rived + базовый класс)
Проблема, с которой я сталкиваюсь, заключается в том, что когда форма отправляется обратно, я могу получить доступ только к свойствам транспортного средства базового класса в своем контроллере. Я не могу получить значение для свойств автомобиля подкласса или джипа.
[HttpPost]
public string ReadPost(Page page)
{
}
Как лучше всего автоматически связать эти значения при отправке формы?
Является ли единственным вариантом создание пользовательского класса подшивки?Может ли кто-нибудь предоставить мне пример кода, как это сделать? Любая помощь очень ценится.