我是淘汰赛和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(“已保存{0}”,“已成功”); 返回Json(new {message}); }
string someData总是为null,我期待一些json数据。
答案 0 :(得分:0)
尝试将this
替换为self
数据并引入字段名称并删除contentType。
$.ajax({
url: '@Url.Action("Save")',
type: 'POST',
data: { someData: ko.toJSON(self) },
dataType: 'json',
success: function (result) { alert(result.message); }
});
在您的情况下,方法的上下文可以从您的对象更改为调用它们的方法或窗口的html元素。
答案 1 :(得分:0)
问题已解决。问题出在控制器端,在控制器的Action中传递相同的模型类而不是手动解析json。