Hola a todos tengo una clase base llamada Vehículo y tengo todas las propiedades comunes a todos los vehículos allí y tengo varias clases derivadas llamados coches, jeep, que se derivan de vehículo y añadir más propiedadesASP.NET MVC 3.0 ¿Enlace de modelo con clases base y derivadas?
Ex:
public class Vehicle
{
public int Color { get; set; }
public double Cost { get; set; }
}
public class Car : Vehicle
{
public SelectListItem Option { get; set; }
}
tengo una clase de página en la que tengo una lista de vehículos como éste
public class Page
{
public List<Vehicle> vehicles { get; set; }
}
mi opinión es fuertemente tipos a la clase de página por lo que en mi opinión estoy bucle sobre todos los vehículos para mostrar en la página así, este código está dentro @using (Html.BeginForm()) así que después de vuelta selecciones del usuario
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>
}
estoy usando un editor de plantillas para cada tipo de vehículo por lo que el VehicleConstants.GetTemplateName llamada a la función simplemente devuelve el nombre de la plantilla a utilizar en función del tipo de vehículo
Esta plantilla simplemente escribe las propiedades de la clase de coche o una clase de Jeep (clase derivada + clase Base)
el problema que estoy teniendo es cuando el formulario se publicado solo puedo acceder a las propiedades de la Clase Base Vehículo en mi controlador No puedo obtener el valor de las propiedades de auto clase o Jeep.
[HttpPost]
public string ReadPost(Page page)
{
}
¿Cuál es la mejor forma de obtener estos valores cuando se envía el formulario de regreso?
¿Crear Custom Binder Class es mi única opción? ¿Es así alguien puede proporcionarme algún código de muestra sobre cómo hacer esto? Cualquier ayuda muy apreciada.