2009-02-20 6 views
5

Quando il mio codice JavaScript utilizza AJAX per chiamare un metodo MVC ASP.NET, passa i valori in JSON. Per esempio:ASP.NET MVC decodifica automaticamente i parametri codificati JSON da 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 

Sul lato ASP.NET MVC, ho il mio metodo per gestire la chiamata:

public void DoSomething(string param1, string param2) { 

Che schifo è param1 è circondata con citazione contrassegni:

"some string" 

Che cosa fa schifo più è param2 è la stringa di :

1234 

quando voglio davvero il valore come numero intero. Quindi, la prima cosa che devo fare è usare DataContractJsonSerializer per decodificare entrambi questi cuccioli in modo che la mia stringa non abbia virgolette e la mia seconda stringa sia convertita in un int. Non è male la prima o due volte, ma diventa vecchio dover fare per ogni singola azione AJAX.

Idealmente, sarebbe fantastico avere una firma come:

public void DoSomething(string param1, int param2) 

dove ho potuto solo saltare a destra e utilizzare i miei valori, senza preoccuparsi di decodifica JSON, proprio come si fa per le azioni non-AJAX .

C'è un modo per farlo?

risposta