我正在使用显示模块模式和淘汰赛来绑定表单。当以该表单(注册)输入数据时,需要将其发布回 MVC4 Web 方法。
这是Jquery代码
/*
Requires JQuery
Requires Knockout
*/
op.TestCall = function () {
// Private Area
var _tmpl = { load: "Loading", form: "RegisterForm"};
var
title = ko.observable(null)
template = ko.observable(_tmpl.load),
msg = ko.observable(),
postData = ko.observable(),
PostRegistration = function () {
console.log("Ajax Call Start");
var test = GetPostData();
$.ajax({
type: "POST",
url: obj.postURL, //Your URL here api/registration
data: GetPostData(),
dataType: "json",
traditional: true,
contentType: 'application/json; charset=utf-8'
}).done(Success).fail(Failure);
console.log("Ajax Call End");
},
GetPostData = function () {
var postData = JSON.stringify({
dummyText1: dummyText1(),
dummyText2: dummyText2(),
});
return postData;
}
return {
// Public Area
title: title,
template: template,
dummyText1: dummyText1,
dummyText2: dummyText2
};
}();
控制器代码现在很简单
// POST api/registration
public void Post(string data)
{
///TODO
}
当我尝试捕获数据(使用简单的 console.log)并在 jslint.com 中验证它时,它是一个有效的 Json。
我尝试将数据硬编码为
数据:“{data:'{\'name\':\'niall\'}'}”,但在我的网络方法中,我仍然得到空值。
在受控的情况下将标签添加
[System.Web.Script.Services.ScriptMethod(UseHttpGet = false, ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)]
到我的 Post 方法中,但仍然没有卓有成效的结果甚至尝试过 JSON.Stringify
data: JSON.stringify(data)
但我的网络方法仍然为空。
我无法弄清楚解决方案。
在此链接http://forums.asp.net/t/1555940.aspx/1中发现了类似的问题, 甚至使用 jQuery Ajax 将参数传递给 WebMethod 但对我没有帮助:(