Salut à tous, j ai un problème dans l'envoie d'un objet Json constitué d'un autre objet Json , je récupère cette objet dans le controlleur mé j ai une exception "l' objet est null", voici le code :
code jQuery:
code controlleur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 function getDetails(s) { var persmod = { id: s, aa: { idadr: s } }; $.ajax({ $.ajax({ type: "POST", url: "PerDetails", data: JSON.stringify(persmod), contentType: "application/json", dataType: "json", success: function (msg) { alert("Data:"+msg.nom+" "+msg.prenom,activite=sa.secteur_activ); } });
les classes sérialisées:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 [JsonFilter(Param = "prM", JsonDataType = typeof(PersonModel))] public JsonResult PerDetails(PersonModel prM) { Personne per = new Personne(); secteurActivite sa = new secteurActivite(); per = perRep.getPersonne(prM.id); sa = actRep.getActivite(prM.adm.idadr); var data = new { nom=per.Nom, prenom=per.Prenom,activite=sa.secteur_activ}; return Json(data, JsonRequestBehavior.AllowGet); }
le filtre Json :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 [Serializable] public class PersonModel { public int id { get; set; } public AdressModel adm { get; set; } } [Serializable] public class AdressModel { public int idadr { get; set; } }
Est ce que je peux récupérer un objet personne qui contient déjà un objet adresse ( un objet complexe)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 public class JsonFilter : ActionFilterAttribute { public string Param { get; set; } public Type JsonDataType { get; set; } public override void OnActionExecuting(ActionExecutingContext filterContext) { if (filterContext.HttpContext.Request.ContentType.Contains("application/json")) { string inputContent; using (var sr = new StreamReader(filterContext.HttpContext.Request.InputStream)) { inputContent = sr.ReadToEnd(); } var result = JsonConvert.DeserializeObject(inputContent, JsonDataType); filterContext.ActionParameters[Param] = result; } } }
et merci en avance![]()
Partager