JSON et ASP.NET MVC
-
01-07-2019 - |
Question
Comment renvoyer un objet JSON sérialisé du côté client à l'aide d'ASP.NET MVC via un appel AJAX?
La solution
Depuis le contrôleur, vous pouvez simplement renvoyer un JsonResult:
public ActionResult MyAction()
{
... // Populate myObject
return new JsonResult{ Data = myObject };
}
La forme de l’appel Ajax dépendra bien entendu de la bibliothèque que vous utilisez. En utilisant jQuery, ce serait quelque chose comme:
$.getJSON("/controllerName/MyAction", callbackFunction);
où la callbackFunction
prend un paramètre correspondant aux données de la requête XHR.
Autres conseils
En fonction de vos préférences de syntaxe, les éléments suivants fonctionnent également:
public ActionResult MyAction()
{
return Json(new {Data = myObject});
}
Ceci est le petit bloc de code destiné à comprendre comment nous pouvons utiliser JsonResults dans les contrôleurs MVC.
public JsonResult ASD()
{
string aaa = "Hi There is a sample Json";
return Json(aaa);
}
Vous pouvez également System.Web.Script.Serialization; comme ci-dessous
using System.Web.Script.Serialization;
public ActionResult MyAction(string myParam)
{
return new JavaScriptSerializer().Serialize(myObject);
}
Ajax
$.ajax({
type: 'POST',
url: '@Url.Action("MyAction","MyMethod")',
dataType: 'json',
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ "myParam": "your data" }),
success: function(data)
{
console.log(data)
},
error: function (request, status, error) {
}
});
Si vous devez envoyer du JSON en réponse à une requête GET, vous devez explicitement autoriser ce comportement en utilisant JsonRequestBehavior.AllowGet.
public JsonResult Foo()
{
return Json("Secrets", JsonRequestBehavior.AllowGet);
}