0

我是敲除和 mvc 的新手,所以我需要一些帮助,我的问题是我的下拉列表正在从服务器成功填充,并且单击保存按钮调用控制器中的保存方法。但问题是在控制器中我无法接收 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); 

在控制器中我有以下代码

public JsonResult Save(string someData) { var message = string.Format("Saved {0} ", "successfully"); 返回 Json(新 { 消息 }); }

string someData 始终为空,我期待一些 json 数据。

4

2 回答 2

0

尝试替换数据中的thistoself并引入字段名称并删除 contentType。

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

在您的情况下,方法的上下文可以从您的对象更改为调用它们方法的 html 元素或窗口。

于 2013-02-14T19:23:05.600 回答
0

问题解决了。问题出在控制器方面,在控制器的操作中传递相同的模型类而不是手动解析 json。

于 2013-03-01T20:11:10.450 回答