Я просматриваю форумы уже 2 дня и не могу найти хороший ответ, поэтому просто опубликую его.
У меня возникла проблема при отправке JSON на контроллер вспасти.JSON должен отображаться в представление модели, но он продолжает получать значения по умолчанию (конструктор), а не значения из POST.
У нас есть серия JS-виджетов, которые содержат поле данных с json.Мы выполняем все наши манипуляции с данными в этих объектах виджетов на стороне клиента.Когда пользователь хочет сохранить, мы берем нужные нам данные из задействованных виджетов и помещаем их в другой объект JSON, который соответствует ViewModel и POST, который возвращается на сервер.
Например:
$("#Save").click(function () {
if (itemDetails.preparedForSubmit() && itemConnections.preparedForSubmit()) {
itemComposite.data.Details = itemDetails.data;
itemComposite.data.Connections= itemConnections.data;
$.post(MYURL, itemComposite.data);
} else {
alert("failed to save");
}
});
Простой метод prepareForSubmit () выполняет такие вещи, как проверки или валидация в последнюю минуту, которые могут потребоваться для клиентской стороны.
Данные виджетов itemDetails соответствуют ViewModel.
ItemConnectionsДанные виджетов соответствуют коллекции ViewModels.
Контроллер выглядит следующим образом:
[HttpPost]
virtual public JsonResult SaveItemDetailsComposite(ItemComposite inItemData)
{
if (ModelState.IsValid)
{
try
{
_Mapper.Save(itemComposite.Details , itemComposite.Connections);
return Json(true);
}
catch (Exception ex)
{
_log.Error("Exception " + ex.InnerException.Message);
throw;
}
}
return Json(SiteMasterUtilities.CreateValidationErrorResponse(ModelState));
}
Класс ItemComposite представляет собой простую модель представления, которая содержит один объект itemDetails и коллекцию itemConnections.Когда он возвращает данные сюда, он просто получает данные по умолчанию, как если бы он получил новый ItemComposite, а не преобразовывает данные POST.
в Firebug, я вижу, что данные опубликованы.Хотя это выглядит странно, но не автоматически форматируется в firebug.