【发布时间】:2020-05-29 04:47:51
【问题描述】:
我一直在尝试使用 ajax 将列表模型发送到控制器,但它似乎根本不起作用
型号
public string MyModel {
public string myfieldName {get;set;}
}
控制器
public JsonResult Create(List<myModel> list)
{
return Json("Success");
}
发布请求
$("body").on("click", "#btnSave", function () {
var list= new Array();
list = [{ myfieldName: 'ABC' }, { myfieldName: 'DEF' }];
//Send the JSON array to Controller using AJAX.
$.ajax({
type: "POST",
url: "/Project/Create",
data: JSON.stringify({ list }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (r) {
alert(r + " record(s) inserted.");
}
});
});
所以当我发送它时,我检查浏览器,我可以看到请求有效负载是使用 json 对象列表发送的 但是,当我转到控制器时,列表根本没有绑定它,所以我检查 http.context 以检查那里的请求有效负载,它都是空的。 另一方面,当我像下面这样更改控制器时
仅使用模型发送请求
public JsonResult Create(myModel data)
{
return Json("Success");
}
并用下面的js更改
$("body").on("click", "#btnSave", function () {
var data ={};
data.myfieldName= "test";
//Send the JSON array to Controller using AJAX.
$.ajax({
type: "POST",
url: "/Project/Create",
data: data,
success: function (r) {
alert(r + " record(s) inserted.");
}
});
});
这里唯一的区别是我不作为 json 发送,所以我的问题是发送模型与使用 ajax 的模型列表之间的区别是什么 我可以改变什么来让控制器绑定数据或接受模型数据列表 注意到我正在使用.Net core 2.0
谢谢
【问题讨论】:
-
在您的
AJAX通话中,您的data应该是:data: JSON.stringify(list), -
也试过了,还是不行
-
你试过我的解决方案了吗?
标签: javascript c# .net asp.net-mvc asp.net-ajax