У меня странная проблема с MVC3 и привязкой модели.Когда я публикую объект JSON в моем контроллере, механизм связывания не может вообще создать типизированный объект.Все свойства по умолчанию (т.е. пустые строки)
Однако, если я создаю экземпляр на сервере и отправляю его как результат действия JSON, данные на проводе выглядят одинаково.
IЯ пробовал с
$.ajaxSettings.traditional = true;
, и это не имеет никакого значения
Например, если я публикую
{"RoutineName":"My new routine","Routines":[{"DayName":"Monday","Items":[21,31]}]}
Связыватель модели не работает, но приходит с сервераданные выглядят как
{"RoutineName":"Routine From Code","Routines":[{"DayName":"Monday","Items":[1,2]},{"DayName":"Tuesday","Items":[]}]}
HTML-код, использованный для генерации, выглядит следующим образом:
$('#submitRoutine').click(function () {
var routines = [];
$('.DayName').each(function (index, item) {
var $item = $(item);
var name = $item.html();
var routineItems = [];
$($item.attr('href')).find('.itemId').each(function () {
routineItems.push(parseInt($(this).val(), 10));
});
routines.push({
DayName: name,
Items: routineItems
});
});
var routine = {
RoutineName: $('#routineName').val(),
Routines: routines
};
$.ajaxSettings.traditional = true;
$.post('/Machine/CreateRoutine', JSON.stringify(routine),function (data) {},'json');
});
Таким образом, похоже, что привязка модели из типизированного объекта к JSON в порядке, но возвращаемся в другую сторонунет.Есть что-то, что я пропустил?
Модели в F #
type RoutineDayViewModel() =
let mutable _name = String.Empty
let mutable _items = new ResizeArray<int>()
member x.DayName with get() = _name and set value = _name <- value
member x.Items with get() = _items and set value = _items <- value
type RoutineViewModel() =
let mutable _name = String.Empty
let mutable _routines = new ResizeArray<RoutineDayViewModel>()
member x.RoutineName with get() = _name and set value = _name <- value
member x.Routines with get() = _routines and set value = _routines <- value
РЕДАКТИРОВАТЬ: я также пробовал с помощью следующих классов C # и получить тот же результат
public class RoutineDayViewModel
{
public string DayName { get; set; }
public List<int> Items{ get; set; }
}
public class RoutineViewModel
{
public string RoutineName { get; set; }
public List<RoutineDayViewModel> Routines { get; set; }
}
Я также добавил следующее в global.asax
ValueProviderFactories.Factories.Add(new JsonValueProviderFactory())
Спасибо