Przekazanie obiektu knockout.js observablearray do akcji kontrolera MVC?

Używam nokautu z MVC. Próbuję przekazać obserwowalną tablicę obiektów z nokautu do mojej akcji kontrolera MVC w celu zapisania do bazy danych. Jeśli przekazuję tablicę z nokautu do mojej akcji kontrolera przez ko.toJSON (viewModel.ArrayName), wraca ona jako null w moim parametrze kontrolera. Jeśli spróbuję przekazać go do MVC przez ko.toJS (viewModel.ArrayName), to ma on prawidłową liczbę elementów, ale z jakiegoś powodu dane są zerowe. Każda pomoc dotycząca tego, jak to zrobić, byłaby mile widziana. Dzięki!

Moja metoda pobierania danych JQuery:

var dataService = {};
var viewModel;

$(document).ready(function () {
    dataService.getAccessLevelList();
})

dataService.getAccessLevelList = function () {
    $.post('/DataService/GetAccessLevelList', null, function (data) {
        viewModel = ko.mapping.fromJS(data); 
        ko.applyBindings(viewModel);
    });
}

To jest metoda problemowa:

updateAccessLevels = function () {
    $.post('/DataService/UpdateAccessLevels', { accessLevels: ko.toJSON(viewModel.AccessLevels) }, function (status) {
        alert(status);
    });
}

Moja operacja pobierania danych kontrolera MVC:

    [HttpPost]
    public ActionResult GetAccessLevelList()
    {
        FacilityAccessViewModel viewModel = new FacilityAccessViewModel();
        viewModel.AccessLevels = unitOfWork.AccessLevelRepository.Get().ToList();
        return Json(viewModel);
    }

Parametr powraca NULL lub z danymi NULL podczas próby przekazania go z Knockout w tej metodzie kontrolera.

    [HttpPost]
    public ActionResult UpdateAccessLevels(List<AccessLevel> accessLevels)
    {
        try
        {
            foreach (AccessLevel record in accessLevels)
            {
                unitOfWork.AccessLevelRepository.Update(record);
            }

            unitOfWork.Save();
            return Json("SUCCESS");
        }
        catch (Exception ex)
        {
            return Json(ex.ToString());
        }
    }

Poniżej znajdują się dane JSON pokazane przez skrzypek, który jest wysyłany do mojej akcji kontrolera MVC, gdy przekazuję {accessLevels: ko.toJSON (viewModel.AccessLevels)} parametr kontrolera ma wartość null, używając tego

[{"Access":[],"Id":1,"AccessLevelDesc":"TEST222"},{"Access":[],"Id":2,"AccessLevelDesc":"TEST222"}]

Poniżej znajdują się dane JS pokazane przez skrzypek, który jest wysyłany do mojej akcji kontrolera MVC, gdy przekazuję {accessLevels: ko.toJS (viewModel.AccessLevels)}, w tym przypadku lista ma dwóch członków zgodnie z oczekiwaniami, ale wszystkie dane są puste we właściwościach

accessLevels[0][Id] 1
accessLevels[0][AccessLevelDesc]    TEST222
accessLevels[1][Id] 2
accessLevels[1][AccessLevelDesc]    TEST222

Jeśli przekazuję pojedynczy obiekt do mojego kontrolera, działa to dobrze, ale wydaje mi się, że nie potrafię znaleźć właściwego sposobu na przesłanie tablicy obiektów do kontrolera z obervablearray z powrotem do encji POCO.

questionAnswers(1)

yourAnswerToTheQuestion