使用Post Ajax将数据发送到ASP.NET MVC控制器

时间:2018-11-07 02:16:50

标签: javascript ajax asp.net-mvc

我尝试用ajax(POST)从视图以JSON格式向控制器发送数据。从console.log中,数据是正确的,但控制器中的数据丢失了。

这是控制者:

[HttpPost]
public ActionResult SavePermission(TestData testData)
{
    return Json("DONE");
}

这是模特:

namespace INTRANETv4.Models
{
    public class TestData
    {
        public string id { get; set; }
        public bool read { get; set; }
        public bool write { get; set; }
        public bool delete { get; set; }
    }
}

这是View中的javascript函数:

function Save() { 
        var rows = document.getElementById("userTable").getElementsByTagName("tr");
        var output = [];
        for (i = 1; i < rows.length; i++) {
            output.push({
                id: rows[i].id,
                read: rows[i].getElementsByTagName("td")[2].getElementsByTagName("input")[0].checked,
                write: rows[i].getElementsByTagName("td")[3].getElementsByTagName("input")[0].checked,
                delete: rows[i].getElementsByTagName("td")[4].getElementsByTagName("input")[0].checked
            });
        }
        var myJSON = JSON.stringify(output);
        console.log(myJSON);

        $.ajax({
            type: "POST",
            contentType: "application/json",
            data: myJSON,
            url: "/Files/SavePermission",
            dataType: "json"
        });
}

这是myJSON的console.log:

enter image description here

这是调试时来自控制器的testData的内容:

enter image description here

当我使用字符串testData时,由于担心转换,因此字符串为null。谢谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

尝试 您将模型更改为List<TestData> testData

,然后将数据更改为JSON.stringify({testData:output}),

$.ajax({
            type: "POST",
            contentType: "application/json",
            data:  JSON.stringify({ testData: output }),
            url: "/Files/SavePermission",
            dataType: "json"
        });