ASP.NET MVC автоматически декодирует JSON-кодированные параметры из AJAX - PullRequest
5 голосов
/ 20 февраля 2009

Когда мой код JavaScript использует AJAX для вызова метода ASP.NET MVC, он передает значения в JSON. Например:

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

или

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

На стороне ASP.NET MVC у меня есть метод для обработки вызова:

public void DoSomething(string param1, string param2) {

То, что отстой, это param1, заключенный в кавычки:

"some string"

Что еще отстой, так это param2 - это строка :

1234

когда я действительно хочу значение в виде целого числа. Итак, первое, что мне нужно сделать, это использовать DataContractJsonSerializer для декодирования обоих этих щенков, чтобы моя строка не имела кавычек, а моя вторая строка была преобразована в int. Это не так уж плохо в первый или два раза, но стареет, когда приходится выполнять каждое действие AJAX.

В идеале было бы здорово иметь такую ​​подпись:

public void DoSomething(string param1, int param2)

, где я мог бы просто перейти и использовать свои значения, не беспокоясь о JSON-декодировании, точно так же, как это делается для действий без AJAX.

Есть ли способ сделать это?

Ответы [ 2 ]

2 голосов
/ 20 февраля 2009

О, после публикации я нашел код, который делает то, что я ищу. Смотрите класс "ObjectFilter" внизу:

http://weblogs.asp.net/omarzabir/archive/2008/10/03/create-rest-api-using-asp-net-mvc-that-speaks-both-json-and-plain-xml.aspx

0 голосов
/ 04 июля 2009

Я не уверен, в чем преимущество использования ModelBinder по сравнению с ObjectFilter для этого, но вот решение, которое я выяснил, которое использует собственный ModelBinder.

Как передать словарь в качестве параметра методу ActionResult из jQuery / Ajax?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...