Связывание модели MVC3 Json не работает при отправке на сервер

У меня странная проблема с MVC3 и привязкой модели. Когда я отправляю объект JSON на свой контроллер, связыватель модели вообще не может создать из него типизированный объект. Все свойства по умолчанию (т.е. пустые строки)

Однако, если я создаю экземпляр на сервере и отправляю его как результат действия JSON, данные на проводе выглядят идентично.

Я пробовал с

$.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())

Спасибо

5
задан Dylan 6 December 2011 в 15:55
поделиться