Это должно быть прекрасно с десериализацией вложенных объектов, если сервер знает о типах ...
Если вы используете JsonValueProviderFactory
для MVC3, вы должны убедиться, что вы JSONify передаваете данные и используете соответствующий тип контента, как показано ниже ...
Поведение по умолчанию для jQuery при передаче объекта в data
для вызова $.ajax
заключается в создании KVP для объекта, который, вероятно, больше подходит для стандартной отправки формы или значений строки запроса, поэтому вам необходимо JSON.stringify
данные.
var o = { "RandomString": "ASDFASDF" };
var nestedobject = { "AnotherString": "ASDFASDF", "SomeObject": o };
$.ajax({
type: 'POST',
url: 'Controller/Method',
data: JSON.stringify(nestedobject),
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: callback
});
Используя это, JsonValueProviderFactory должен правильно десериализовать параметры и сопоставить их с сигнатурой действия контроллера, как показано ниже.
public ActionResult Method(string AnotherString, SomeType SomeObject) { /* ... */ }
public class SomeType {
public string RandomString {get;set;}
}
Решение
Я хотел поместить это здесь для полноты картины. Я использовал код, который он мне дал, но главная проблема в том, что мне нужно было пометить объект SerializableAttribute
. Спасибо!