c# - JSON 作为 null 传递给方法参数

标签 c# javascript ajax json knockout.js

我终于尝试使用 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/

相关文章:

c# - IObservable .Cast<>() 和协方差

c# - 动态地向数组添加新维度

javascript - 传单和 MongoDB 半径

javascript - 为什么跨域 AJAX 请求标记为 "security risk"?

jquery - ajax 请求在 Postman 中工作,而不是在代码中

c# - 如何验证字符串是否为正则表达式?

c# - 公共(public)与公共(public)静态方法

javascript - Node.js/Express 应用程序中的内存消耗

JavaScript for HTML::我想将多个数据显示到每个表行的多个字段中

java - 将 JSON 从 ajax 发布到 Struts2 Action