/ / Passage de paramètres de JQuery à l'action du contrôleur dans ASP.NET MVC 3 - jquery, asp.net-mvc-3

Passage de paramètres de JQuery à une action de contrôleur dans ASP.NET MVC 3 - jquery, asp.net-mvc-3

J'ai une page Web qui utilise JQuery pourcommuniquer avec le backend. J'ai quelques actions POST. Cependant, j’ai maintenant une action GET et j’ai remarqué que les valeurs de paramètre qui lui sont transmises sont nulles. Mes actions POST fonctionnent parfaitement. Je ne peux pas savoir pourquoi.

Dans mon fichier .html, j'ai la requête JQuery suivante:

var vm = { emailAddress:"someone@somewhere.com" };
$.ajax({
url: "/myService/myAction",
type: "GET",
data: JSON.stringify(vm),
contentType: "application/json",
success: myAction_Succeeded,
error: myAction_Failed
});

Dans mon contrôleur, j'ai:

public class MyServiceController : Controller
{
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult MyAction(string emailAddress)
{
return Json(new { address:emailAddress });
}
}

Mon itinéraire est configuré comme suit:

context.MapRoute(
"MyAction",
"myService/{controller}/MyAction",
new { controller = "MyService", action = "MyAction" }
);

J'ai l'impression que je manque quelque chose dans monroute. Mais je ne suis pas sûr de ce que c'est. J'ai suivi la même syntaxe que celle utilisée pour mes actions POST. Les paramètres avec ces actions fonctionnent parfaitement. Mais les paramètres avec mes actions GET, comme celui ci-dessus, ont une valeur nulle. Ma question est: , qu'est-ce que je fais mal et si j'ai besoin de passer plusieurs paramètres?

Je vous remercie beaucoup pour votre aide!

Réponses:

4 pour la réponse № 1

JsonValueProviderFactory qui vous permet d'envoyer des requêtes JSON aux actions du contrôleur dans ASP.NET MVC 3 fonctionne avec les requêtes POST. Pour les demandes GET, vous pouvez utiliser une demande standard:

var vm = { emailAddress:"someone@somewhere.com" };
$.ajax({
url: "/myService/myAction",
type: "GET",
data: vm,
success: myAction_Succeeded,
error: myAction_Failed
});

Ou si vous souhaitez envoyer des requêtes JSON, modifiez type: "POST" dans votre demande AJAX. Évidemment, dans ce cas, vous devrez enlever le HttpVerbs.Get attribut de votre action de contrôleur qui le contraint actuellement aux seules requêtes GET.