如何在.net核心中将Json数据发布到没有模型的控制器

时间:2018-11-21 14:24:38

标签: javascript jquery json ajax .net-core

存储在网格中的巨大数据来自一个SQL查询,而该SQL查询的连接超过了ona表。数据类型为Json。我过滤了数据,然后想将过滤后的数据发送到控制器。但是怎么可能呢? 这是JavaScript块中的测试json数据:

var jsonData = {
    "FirstName": "John",
    "LastName": "Doe",
    "DoB": "01/01/1970" };

这是我的javascript函数:

function submitForm() {
    var user = jsonData;

    jQuery.ajax({
        type: "POST",
        url: "@Url.Action("GetJsonData", "Account")",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify(user),
        success: function (data) { alert(data); },
        failure: function (errMsg) {
            alert(errMsg);
        }
    });
}

如何在控制器中获取Json数据?这是我的[HttpPost]方法:

    [HttpPost]
    public IActionResult GetJsonData(String user)
    {
        //...
        return null;
    }

用户为空。我应该在方法中还是其他类型上更改类型“ String”?

1 个答案:

答案 0 :(得分:1)

由于user是字符串,因此您可以尝试创建具有属性user的对象:

jQuery.ajax({
    type: "POST",
    url: "@Url.Action("GetJsonData", "Account")",
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    data: { 
        user: JSON.stringify(user) 
    },
    success: function (data) { alert(data); },
    failure: function (errMsg) {
        alert(errMsg);
    }
});

或使用FormData

var formData = new FormData();
formData.append('user', JSON.stringify(user));

jQuery.ajax({
    type: "POST",
    url: "@Url.Action("GetJsonData", "Account")",
    contentType: false,
    processData: false,
    data: formData,
    success: function (data) { alert(data); },
    failure: function (errMsg) {
        alert(errMsg);
    }
});