Как принять JSON в метод действия MVC2 в качестве параметра и автоматически десериализовать его? - PullRequest
1 голос
/ 03 сентября 2010

Справочная информация:

  1. У меня есть проект MVC2, и я использую jQuery 1.4.2.
  2. У меня есть класс .NET, который я помещаю в представление с помощью JsonResult.
  3. Затем страница использует jQuery для выполнения каких-либо действий, которые приведут к свойствам объекта, помещенного на страницу, по пункту (2) выше.
  4. При нажатии определенного элемента страницы jQuery $ .post возвращает метод JSON.stringify (myObj) к действию.

Я бы хотел иметь что-то вроде:

[HttpPost] public ViewResult MyAction (MyClass minime) { }

... MyClass был бы классом .NET для десериализации JSON, в который все должно быть в порядке, учитывая, что это был тип MyClass, который получил «return Json (MyClass);»

В настоящее время я вижу, что либо параметр объекта равен нулю, либо не имеет значений, заданных кодом JS / jQuery. Если я попытаюсь:

MyClass foo = new MyClass (); UpdateModel (Foo);

Это не вызывает исключения, но подобное не заполняет класс.

У кого-нибудь есть идеи, как это решить? Или как работать с JSON, отправленным обратно в метод действия и получить его в классе.

1 Ответ

3 голосов
/ 03 сентября 2010

Если у вас есть Действие

[HttpPost]
public JsonResult MyAction(MyClass minime)

, где, например,

public class MyClass {
    public string Name { get; set; }
    public int Age { get; set; }
}

, вы должны заполнить все свойства класса MyClass в качестве параметров.Входные данные не должны быть в формате JSON :

$.ajax({
    url: '/MyController/MyAction',
    data: { name: "Peter", age: 33 },
    dataType: 'json',
    traditional: true,
    type: 'POST',
    success: function (data) {
        // get data which are already deserialized from JSON
    }
});

Если вы прочитали DateTime свойств Параметр даты JSON, переданный в MVC Действие всегда равно нулю .

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