Je veux créer un J'ai eu mes dtos comme ceci: p> [httppost] code> méthode du contrôleur. Comme vous pouvez le voir ci-dessous, j'ai une classe avec deux propriétés de type
ibaseclass code>. C'est parce que ces propriétés peuvent être soit de type
myClassa code> ou
myClassb code>.
[HttpPost]
public ActionResult Post([FromBody]MyDtoToGet myDtoToGet)
{
// Problem here -> myDtoToGet is null!
}
3 Réponses :
Si vous souhaitez obtenir des données sous forme de MyDtotoget code> classe. Le JSON devrait être au format suivant. La raison pour laquelle vous avez obtenu
null code> est dû au format JSON non valide étant passé.
{
"MyId": 1,
"base1": {
"Id": 2,
"PropertyA": "any string"
},
"base2": {
"Id": 3,
"PropertyA": "any string"
}
}
Assurez-vous de ne pas oublier de définir «Type de contenu: Application / JSON» sur votre demande, et que le format JSON de vos données correspond à votre DTO. P>
meilleur à essayer avec simple DTO pour commencer. p>
Je l'ai résolu en acceptant un merci de toute façon. p> Jobject code> au lieu d'un
mydtotoget code> du corps JSON. Ensuite, j'ai converti manuellement le type des interfaces au type correct. À la fin, j'ai créé un nouvel objet et ajouté les objets convertis. P>
Pouvez-vous placer votre code mis à jour, comme votre convertie en jobject .. Je suis confronté à un problème similaire
Comment le désérialiseur va-t-il deviner quel type à utiliser? Les DTO sont censés être simples. Json elle-même ne sait rien sur l'héritage