Я смотрю на форумах уже 2 дня и не могу найти хороший ответ, поэтому я просто опубликую его.MVC2 отправка коллекций с точки зрения контроллера через json
У меня возникла проблема с отправкой 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");
}
});
Метод preparedForSubmit() просто делает такие вещи, как любые проверки правильности или последней минуты форматирования может понадобиться сделать на стороне клиента.
ЭлементДетали данных виджетов соответствуют 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.
Спасибо, что я .Net noob пришел из GWT env, я прочитаю об этом, посмотрим, как это работает. –