我终于尝试使用 KnockoutJS。我探索了将 JSON 数据发送到 MVC 4 中的 C# 方法的更短方法,但最终使用了 AJAX 方法。我对以下内容有些困惑,希望有人能提供帮助。
Javascript
var VM = function () {
var self = this;
self.ValidateAndCreate = function () {
console.log("entered");
var a = {
b: "1",
c: "2",
d: {
e: "3"
}
};
var input = { data: a }
console.log(JSON.stringify(input));
$.ajax({
url: '/McAfee/ValidateAndCreatePartner',
data: JSON.stringify(input),
type: 'POST',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (result) {
console.log('success');
}
});
}
}
var viewModel = new VM();
ko.applyBindings(viewModel);
C#
[HttpPost]
public void ValidateAndCreatePartner(string data)
{
var x = JsonConvert.DeserializeObject(data);
RedirectIfSuccess();
}
当前发生的情况是 ValidateAndCreatePartner
触发,但参数 data
为 null,随后 NewtonSoft.Json.JsonConvert.DeserializeObject
失败因此。我该如何解决这个问题?
最佳答案
MVC 中最简单的方法是根据您的数据创建类:它更干净!例如,对于您的示例,您可以尝试以下操作:
[HttpPost]
public ActionResult Test(TestClass data) {
RedirectIfSuccess();
}
public class TestClass
{
public string b { get; set; }
public string c { get; set; }
public TestSubClass d { get; set; }
}
public class TestSubClass
{
public int e { get; set; }
}
关于c# - JSON 作为 null 传递给方法参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25991469/