2009-02-20 13 views
5

Cuando mi código JavaScript usa AJAX para llamar a un método ASP.NET MVC, pasa valores en JSON. Por ejemplo:ASP.NET MVC decodifica automáticamente los parámetros codificados en JSON desde 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 

o

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 

En el lado ASP.NET MVC, tengo mi método para gestionar la llamada:

public void DoSomething(string param1, string param2) { 

Lo que se chupa param1 está rodeado con la cita marcas:

"some string" 

Lo que chupa más es param2 es la cadena :

1234 

cuando realmente quiero el valor como un entero. Entonces, lo primero que tengo que hacer es usar DataContractJsonSerializer para decodificar estos cachorros, así que mi cadena no tiene comillas y mi segunda cadena se convierte en una int. No es tan malo la primera o las dos veces, pero se hace viejo para cada acción de AJAX.

Idealmente, sería impresionante tener una firma como:

public void DoSomething(string param1, int param2) 

donde tan sólo pudiera saltar a la derecha y usar mis valores sin preocuparse de decodificación JSON, al igual que se hace para las acciones no AJAX .

¿Hay alguna manera de hacerlo?

Respuesta

Cuestiones relacionadas