Javascript 使用jQuery Ajax将对象数组传递到MVC.net核心控制器方法
我正在使用.netcore 1.1,Visual studio 2017,Jquery version=“3.2.1” ,我试图让MVC控制器从我的页面获取数据, 我在java中有两个数组,一个是对象数组(模型视图),另一个是字符串数组Javascript 使用jQuery Ajax将对象数组传递到MVC.net核心控制器方法,javascript,jquery,ajax,asp.net-mvc,asp.net-core,Javascript,Jquery,Ajax,Asp.net Mvc,Asp.net Core,我正在使用.netcore 1.1,Visual studio 2017,Jquery version=“3.2.1” ,我试图让MVC控制器从我的页面获取数据, 我在java中有两个数组,一个是对象数组(模型视图),另一个是字符串数组 对象数组始终返回错误400(错误请求) 2-字符串数组,始终向控制器发送null 我遵循下面的答案,但没有成功 及 下面是我的chtml页面 //#region send data back t oserver $('#Savebt
//#region send data back t oserver
$('#Savebtn').click(function () {
console.log(editedRows);
var UpdatedRows = JSON.stringify({ 'acActivityed': editedRows });
console.log(UpdatedRows);
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/acActivity/Edit",
//traditional: true,
data: UpdatedRows ,
dataType: "json",
success: function (data) {
// here comes your response after calling the server
alert('Suceeded');
},
error: function (jqXHR, textStatus, errorThrown) {
alert("error : " + jqXHR.responseText);
}
});
});
//#endregion
//#region deleted all selected
$('#DeleteSelectedbtn').on('click', function () {
if (confirm("Are you sure to delete All Selected ?????")) {
var selectedData = [];
var selectedIndexes;
selectedIndexes = grid.getSelectedRows();
jQuery.each(selectedIndexes, function (index, value) {
selectedData.push(grid.getDataItem(value).id);
});
console.log(selectedData);
var SelectedIds = selectedData.join(',') ;
console.log(SelectedIds);
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/acActivity/DeleteSelected",
data: JSON.stringify({ "ids": SelectedIds }),
dataType: "json",
success: function (data) {
grid.render();
},
error: function (err) {
alert("error : " + err);
}
});
}
});
//#endregion
两者都有如下控制台快照的数据
所选ID为1
我的控制器
这个应该是对象列表,并且总是返回错误的请求
[HttpPost]
[ValidateAntiForgeryToken]
//public jsonResult Edit( List<acActivitytbl> acActivityed)
public ActionResult Edit( List<acActivitytbl> acActivityed)
{
foreach (acActivitytbl it in acActivityed)
{
logger.Log(LogLevel.Info, it.ID);
logger.Log(LogLevel.Info, it.Name);
logger.Log(LogLevel.Info, it.IsActive);
}
//return View(acActivityed);
return Json(new { success = true, responseText = "end of Page" });
}
我知道这里缺少了一些东西,但我找不到它,在这方面有什么帮助吗???它只是
数据:UpdatedRows,
(UpdatedRows
已经是正确的数据)并且您可以删除传统:true,
(这不适用于复杂对象的集合或您的contentType
选项。谢谢,我确实这样做了,但仍然收到相同的错误(400(错误请求))使用浏览器工具检查响应(网络选项卡)要确定错误是什么。在第二个示例中,为什么要获取一个数组,将其连接到字符串,然后在控制器中再次将其拆分回来?)对于第二种情况,我尝试了所有的事情,希望一次尝试可以让事情变得更好,所以我尝试将它作为字符串发送到其中一个,并保持原样,在第二种情况下,不需要加入,您可以将字符串id列表发送到控制器列表id,只需数据:UpdatedRows,
(UpdatedRows
您已经有正确的数据了)您可以删除traditional:true,
(这不适用于复杂对象的集合或您的contentType
选项。谢谢,我确实这样做了,但仍然收到相同的错误(400(错误请求))使用您的浏览器工具检查响应(网络选项卡)要确定错误是什么。在第二个示例中,为什么要获取一个数组,将其连接到字符串,然后在控制器中再次将其拆分回来?)对于第二个,我尝试了所有的事情,希望一次尝试可以让事情变得更好,所以我尝试将它作为字符串发送到其中一个,并保持原样,在第二个情况下不需要加入,您可以将字符串id列表发送到控制器列表id
public ActionResult DeleteSelected(string ids)
{
try
{
char[] delimiterChars = { ' ', ',', '.', ':', ' ' };
string[] words = ids.Split(delimiterChars, StringSplitOptions.RemoveEmptyEntries);
if (words != null && words.Length > 0)
{
foreach (var id in words)
{
bool done = true; //new acActivitiesVM().Delete(Convert.ToInt32(id));
logger.Log(LogLevel.Info, " acActivities ID {0} is Deleted Scussefully ", id);
}
return Json(new { success = true, responseText = "Deleted Scussefully" });
}
return Json(new { success = false, responseText = "Nothing Selected" });
}
catch (Exception dex)
{
..... removed to save space
});
}
}