2009-02-20 9 views
5

Lorsque mon code JavaScript utilise AJAX pour appeler une méthode ASP.NET MVC, il transmet les valeurs dans JSON. Par exemple:ASP.NET MVC décoder automatiquement les paramètres codés JSON d'AJAX

var request = new XMLHttpRequest(); 
request.open("GET", "http://www.awesome.com/DoSomething?param1=%22some%20string%22&param2=1234", true); // parameter string created with JSON.stringify 

ou

var request = new XMLHttpRequest(); 
request.open("POST", "http://www.awesome.com/DoSomething", true); 
// set some headers 
request.send("param1=%22some%20string%22&param2=1234"); // parameter string created with JSON.stringify 

Du côté ASP.NET MVC, j'ai ma méthode pour gérer l'appel:

public void DoSomething(string param1, string param2) { 

Ce qui suce est param1 est entouré de citation marques:

"some string" 

Ce qui suce plus est param2 est la chaîne :

1234 

quand je veux vraiment la valeur comme un entier. Donc, la première chose que je dois faire est d'utiliser DataContractJsonSerializer pour décoder ces deux chiots afin que ma chaîne n'ait pas de guillemets et que ma seconde chaîne soit convertie en int. Ce n'est pas trop mal la première ou la deuxième fois, mais il devient trop vieux pour chaque action AJAX.

Idéalement, ce serait génial d'avoir une signature comme:

public void DoSomething(string param1, int param2) 

où je pouvais sauter à droite et utiliser mes valeurs sans se soucier de décodage JSON, tout comme cela se fait pour les actions non-AJAX .

Existe-t-il un moyen de le faire?

Répondre

Questions connexes