2010-04-08 2 views
5

Я хотел бы передатьКак передать объект JSON в параметры действия MVC?

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

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

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

Использование JQueries АЯКС метод с использованием JSON в качестве параметра данных

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

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

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

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

+0

Можете ли вы опубликовать свой текущий код вызова jQuery? – tzaman

+0

Вы пробовали это без кавычек на имена переменных? См. Ответ @ Райана. Это должно делать то, что вы хотите (если я правильно понимаю) – SlackerCoder

ответ

2

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

$.ajax({ 
    url: "target.aspx", 
    data: {parameter1: true, parameter2: false, parameter3: true}, 
    success: handleResponse 
}); 
+0

Если это то, что вы сделали, можете ли вы использовать Firebug для подтверждения того, что параметры действительно находятся в запросе? Или вы можете установить контрольную точку в своем контроллере и проверить HttpContext. – Ryan

+0

Вот как я передаю свои параметры, но как заставить их привязываться к моим параметрам действий (а не к объекту параметров действий); – TimTam

+1

Вы используете стандартную модель связующего? Это должно сработать. – Ryan

0

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

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

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

0

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

+0

Это похоже на привязку для свойств объекта. Я хочу привязать к параметрам действия (так что мне не нужно создавать другой объект) – TimTam

Смежные вопросы