tengo un requisito para que los usuarios editar una lista de citas para una ventaja, las cotizaciones pueden ser de diferentes tipos, tales como:Publicación de un conjunto de subclases
- QuoteForProductTypeA
- QuoteForProductTypeB
Todos los tipos de presupuesto comparten una clase base común, como QuoteBase.
tengo mis citas se presentan bien en la parte delantera, y parece que después de vuelta los datos correctos también.
Sin embargo, en el servidor obviamente no sabe qué subclase usar, por lo que solo usa la clase base.
creo que es necesario algún tipo de ligante modelo personalizado para WebAPI para comprobar si hay un campo oculto como ModelType que contiene el tipo del objeto de la colección, el aglutinante modelo continuación, crea un nuevo objeto de este tipo y se une al propiedades de mis valores publicados a este objeto.
Sin embargo, estoy atascado en este punto, con muy poca documentación/blogs sobre cómo hacer esto.
He comprobado el código fuente de WebApi para ver si puedo extender una carpeta de modelos predeterminada, pero los valores predeterminados son clases selladas.
Solo puedo implementar IModelBinder por su aspecto, puedo crear el tipo de modelo correcto buscando un valor llamado ModelType, pero no estoy seguro de cómo llenar el resto de los valores en mis subclases, si había una carpeta de modelo predeterminada de la que estaba heredando, solo llamaría al método de vinculación de las clases base.
Gracias, que hace el truco. Estaba serializar mi modelo a JSON para knockoutJs a consumir con este código: Html.Raw (Json.Encode (Modelo)), sin embargo, tenía que cambiar el código para utilizar el serializador Json.Net lugar, y especifique la opción no TypeNameHandling también ... solo en caso de que otros estén buscando la respuesta. –
En caso de que sea útil a alguien más - '$ type' debe ser el primer campo enumerado en el objeto o JSON.Net no será capaz de deserializar ella. –