数据未传递给控制器,始终为null
我在视图中的脚本:
function deleteRecords() {
var selected = [];
$('#myTable input:checked').each(function () {
selected.push($(this).attr('id'));
});
$.ajax({
url: '/Home/DeleteRecords',
type: 'POST',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: { "json": JSON.stringify(selected) },
error: function () {
alert("Error!");
}
});
}
我的家庭控制器方法:
[HttpPost]
public IActionResult DeleteRecords(string AllId)
{
return null;
}
答案 0 :(得分:2)
发送如下的ajax请求数据,
$.ajax({
url: '/Home/DeleteRecords',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(selected),
error: function () {
alert("Error!");
}
});
并接收行动中的数据,如
[HttpPost]
public IActionResult DeleteRecords(string[] AllId)
{
return null;
}
需要传递动作。希望对你有所帮助。
答案 1 :(得分:0)
在Post中为您的属性命名与您的方法相同,以便自动绑定选择它。 - 事实证明这对于单个对象并不重要。
您创建的数据对象无法通过.net进行解析,直接使用JSON.stringify作为数据有效负载。
注意:由于您传递了一个字符串数组,因此Home控制器中的更改。
function deleteRecords() {
var selected = [];
$('#myTable input:checked').each(function () {
selected.push($(this).attr('id'));
});
$.ajax({
url: '/Home/DeleteRecords',
type: 'POST',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(selected),
error: function () {
alert("Error!");
}
});
}
对于您的家庭控制器方法:
[HttpPost]
public IActionResult DeleteRecords(string[] AllId)
{
return null;
}
答案 2 :(得分:0)
使用您的问题中的代码,请尝试以下获取json
System.Web.Context.Current.Request.Form["json"]
如果你想要更优雅的东西,你需要在参数签名
中加入FromBody属性DeleteResults([FromBody] string json)