Работая с KO, я обнаружил, что намного проще работать с чистым json как в качестве входных, так и выходных данных ваших методов действий.
Намного проще, если ваша клиентская модель максимально приближена к серверной. Как вы заполняете эту модель, зависит от вас (код вручную, карта, используя плагин отображения и т. Д.). Предполагая, что ваша клиентская модель для члена выглядит как
var memberViewModel = function() {
this.name = ko.observable("Alex");
this.ageBrackets = ko.observableArray([
{ minAge: 15, maxAge: 20 },
{ minAge: 18, maxAge: 21 },
]);
};
Тогда ваш метод действия может быть
public JsonResult Create(Member member) {
....
}
Когда вы нажимаете кнопку «Создать», вы запускаете функцию, которая преобразует вашу memberViewModel в JSON, который будет отправлен обратно и автоматически сопоставлен с вашей моделью Member.
Для преобразования в формат JSON вы можете использовать ko.toJSON(memberViewModel)
или ko.mapping.toJSON(memberViewModel)
, если изначально использовали подключаемый модуль отображения.
Надеюсь, это поможет.