Pourquoi la liaison de modèle d'imbrication à 3 niveaux de json ne fonctionne-t-elle pas?ASP.NET MVC 3 Liaison de modèle JSON avec objet à 3 niveaux
Test avec 2 niveaux, par exemple en ajoutant une propriété de chaîne sur LevelTwo, fonctionne, mais 3 niveaux doesnt? Est-ce par conception, un bug, ou est-ce que je manque quelque chose?
côté client post jQuery:
$.ajax({
url: "MyController/MyAction",
dataType: "json",
type: "POST",
cache: false,
data: {
Level1: {
Level2: {
StringValue: "Test"
}
}
}
});
modèle côté serveur:
public class MyForm
{
public LevelOne Level1 { get; set; }
}
public class LevelOne
{
public LevelTwo Level2 { get; set; }
}
public class LevelTwo
{
public string StringValue { get; set; }
}
Doh! Merci! J'ai supposé que dataType: "json" était tout ce qui était nécessaire. Vous savez, les hypothèses sont la mère de tous ... – MatteS
@MatteS, 'dataType: 'json'' indique le type de contenu de la réponse, pas la requête. De même, si votre serveur envoie un en-tête de réponse Content-Type approprié à application/json, vous n'en aurez même pas besoin car jQuery le déduira automatiquement. Vous pouvez omettre ce paramètre de votre requête ajax. –
Oui. Cela m'a fait revenir en arrière et rappeler pourquoi l'option dataType a été ajoutée pour commencer dans notre base de code, et il peut être intéressant de noter qu'elle ajoute l'en-tête "Accept: application/json, text/javascript, */*;" à la demande, et c'est quelque chose que notre logique de gestion des erreurs aime. – MatteS