2013-02-14 4 views
0

Я новичок с нокаутом и mvc, поэтому мне нужна помощь, мой вопрос: мой раскрывающийся список успешно заполняется с сервера и нажимает кнопки сохранения. Сохраняет метод в контроллере. Но проблема в том, что в контроллере я не могу получить json-данные, то есть он равен нулю. Вот мой код в видуНевозможно получить данные json в контроллере с нокаутом

var initialData = @Html.Raw(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(Model)); 


    var viewModel = function(){ 
     var self = this; 
     self.HomeAgencies = ko.observableArray(initialData.HomeAgencies); 
     self.selectedOrgUnit = ko.observable(); 
     self.Save = function() { 
            $.ajax({ 
            url: "@Url.Action("Save")", 
            type: "POST", 
            data: ko.toJSON(this), 
            contentType: "application/json; charset=utf-8", 
            dataType:"json", 
            success: function(result) {alert(result.message)} 
            }); 
           } 
    } 

    var vm = new viewModel(); 
    ko.applyBindings(vm); 

Где в контроллере я следующий код

общественного JsonResult Сохранить (строка someData) { вар сообщение = string.Format (» Сохранено {0} "," успешно "); return Json (new {message}); }

string someData всегда null, где я ожидаю некоторые данные json.

ответ

0

выпуск разрешен. Проблема была на стороне контроллера, в Action контроллера прошел один и тот же модельный класс, вместо того, чтобы вручную разбирать json.

0

Попробуйте заменить this на номер self и введите имя поля и удалите контент.

$.ajax({ 
    url: '@Url.Action("Save")', 
    type: 'POST', 
    data: { someData: ko.toJSON(self) }, 
    dataType: 'json', 
    success: function (result) { alert(result.message); } 
}); 

В вашем случае контексте методы может быть изменен с вашего объекта элемента HTML, вызвавшими их метод или к окну.

+0

Я уже пробовал это, но не успел. –

+0

Я отредактировал мой ответ, попробуйте еще раз –

+0

Нет, он все еще не работает. Вместо этого контроллер не получает ajax-вызов. –