Как передать объект JSON в параметры действия MVC? - PullRequest
5 голосов
/ 09 апреля 2010

Я хотел бы передать

{"id":1, "name":"stackoverflow", "parameter2":false, "parameter3":true}

Моему действию

public JsonResult Action(int id, string name, bool parameter2, bool parameter3)
{
    //...
}

Использование ajax-метода JQueries с использованием JSON в качестве параметра данных

$.ajax({
   url: "target.aspx",
   data:  {"id":1, "name":"stackoverflow", "parameter2":false, "parameter3":true},
   success: handleResponse
});

Iв fiddler можно видеть, что мой объект JSON отправляется, но они не привязаны к параметрам моих действий.Как мне заставить их привязаться к параметрам?

Я не хочу привязывать объект к действию, которое содержит мои значения, т.е. я не хочу, чтобы Action (MyCustomObjectToAcceptParameters json) Я хочу, чтобы каждое свойство JSON связывалось с каждым параметром действия.

Если я передаю свои параметры в виде строки запроса, все работает, но JSON гораздо проще создать / поддерживать, чем набор значений строки запроса, поэтому я хотел бы, чтобы что-то взяло мой json и связало его с каждым параметром в моемдействие.Мне не нужно связывать сложные типы с камерами данных, просто с простыми строками, целыми числами и логическими значениями.

Ответы [ 3 ]

2 голосов
/ 09 апреля 2010

Я вижу, что @womp удалил свой ответ, основываясь на моих отзывах, так что вот решение. Вы можете передать объект JSON в качестве параметра data . См. здесь для примеров.

$.ajax({
   url: "target.aspx",
   data: {parameter1: true, parameter2: false, parameter3: true},
   success: handleResponse
 });
0 голосов
/ 09 апреля 2010

Связующий материал / фильтр отлично.Для более точного управления сопоставлением свойств json names <-> бизнес-класса используйте атрибут [DataMember] для свойств и [DataContract] для класса.См. DataContractJsonSerializer .

0 голосов
/ 09 апреля 2010

womp дал вам хороший ответ, но если вам нужно сделать это для нескольких действий или вы хотите более сложную привязку к сложному объекту, эти статьи могут помочь:

Реализация пользовательского фильтра: http://blogger.forgottenskies.com/?p=252

Использование пользовательского связующего для модели: http://community.codesmithtools.com/blogs/tdupont/archive/2009/08/10/mvc-custom-json-binder.aspx

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