我尝试用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:
这是调试时来自控制器的testData的内容:
当我使用字符串testData时,由于担心转换,因此字符串为null。谢谢您的任何建议。
答案 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"
});