Я получаю большинство своих данных в виде моделей из моего приложения MVC и просто оперирую ими на стороне клиента. Когда я закончу с тем, что делает пользователь, я просто отправляю модель / массив моделей на сервер.
В конкретном сценарии я отправляю массив с двумя моделями обратно в приложение. Я могу видеть все значения модели в HTTP ... но когда они десериализованы и переданы моему контроллеру, они выходят "пустыми", то есть все свойства устанавливаются в значения по умолчанию, но коллекция состоит из двух элементов.
Есть идеи, что может быть причиной этого? Похоже, что MVC не может десериализовать HTTP для строго типизированных объектов, но я не могу понять, почему в HTTP все «хорошо» выглядит. Есть ли какой-то процесс, который я мог бы пропустить?
Если это важно, я пытался «получить» данные в качестве формальных параметров типа IList и MyModel [] ... похоже, не помогает.
Мне сложно придумать конкретный код, но здесь - возможно, это поможет
// Client side
var models = new Array();
for(var i in selectedModels) {
var item = selectedModels[i];
if(typeof(item) != 'function') {
models.push(item);
}
}
$.ajax({
type: "POST",
data: { myModels: models, name: "" },
dataType: "json",
url: "/json/my-controller/create-models",
success: function (data, successCode, httpRequest) {
// Do some stuff
}
})
// Server Side
[HttpPost, ActionName("create-models")]
public ActionResult DoSomething(MyModel[] myModels)
{
if(myModels == null || myModels.Length < 1)
{
throw new InvalidOperationException("You must provide at least one model to add to the collection.");
}
// Do someother stuff...
return Json(someNewModel);
}