在ASP.Net内核中使用AJAX/JQuery向控制器发送参数时出现问题
在此方面的任何帮助都将不胜感激。我的UI上有一个datagrid和一个下载按钮。当用户在网格中选择一行并单击下载时,它应该将int id作为参数传递给控制器上的下载方法,从而触发进一步的处理 我已经尝试过使用Ajax/JQuery来实现这一点,但遗憾的是,我是一个新手,我一直将0传递给controller。它正确地选择了我的id,因为我有一个警报,显示每个选择的正确id。我在检查铬时没有发现任何错误 请参见以下相关代码: //html在ASP.Net内核中使用AJAX/JQuery向控制器发送参数时出现问题,jquery,ajax,asp.net-mvc,asp.net-core,devexpress,Jquery,Ajax,Asp.net Mvc,Asp.net Core,Devexpress,在此方面的任何帮助都将不胜感激。我的UI上有一个datagrid和一个下载按钮。当用户在网格中选择一行并单击下载时,它应该将int id作为参数传递给控制器上的下载方法,从而触发进一步的处理 我已经尝试过使用Ajax/JQuery来实现这一点,但遗憾的是,我是一个新手,我一直将0传递给controller。它正确地选择了我的id,因为我有一个警报,显示每个选择的正确id。我在检查铬时没有发现任何错误 请参见以下相关代码: //html <form asp-contr
<form asp-controller="Home" asp-action="Download" method="get">
<div id="downloadButton"></div>
</form>
//使用Ajax的JQuery函数:
function getLoadId() {
var dataGrid = $("#gridContainer2").dxDataGrid("instance");
var loadId = dataGrid.getSelectedRowKeys();
console.log("Load ID: " + loadId);
download(loadId);
}
function download(loadId) {
$("#downloadButton").dxButton({
text: "Download Selected",
type: "normal",
icon: "/favicon.ico",
contentType: "application/json; charset=utf-8",
dataType: "json",
useSubmitBehavior: true,
onClick: function (e) {
$.ajax({
url: 'https://localhost:44346/home/Download/',
data: { LoadID: loadId}
}).done(function () {
DevExpress.ui.notify("Downloading results for Load ID: " + loadId, "info", 1500);
});
}
});
};
//家庭控制器上的下载方法:
[HttpGet]
public async Task<IActionResult> Download(int loadId)
{
//always 0...
Console.WriteLine("Load ID passed from UI:" + loadId);
//further processing
}
[HttpGet]
公共异步任务下载(int-loadId)
{
//总是0。。。
Console.WriteLine(“从UI传递的加载ID:+loadId”);
//深加工
}
尝试将您的jQuery.ajax
更改为以下内容:
$.ajax({
url: 'https://localhost:44346/home/Download/',
type: 'GET',
data: {
loadId: getLoadId()
}
}).done(function() {
DevExpress.ui.notify("Downloading results for Load ID: " + loadId, "info", 1500);
});
注意,在发送到服务器的数据中,我将loadId
小写,并明确指出这是一个HTTP GET请求
编辑:您根本没有调用
getLoadId
函数;这里重要的一行是loadID:getLoadId()
。通过在浏览器开发工具的getLoadId
中设置断点来确认这一点-我非常确定,如果没有上述更改,当您单击按钮时,断点不会被击中。尝试此url:'https://localhost:44346/home/Download/“+loadId
并删除数据非常感谢您查看此内容。不幸的是,我在更改后出现了一个错误:“没有找到网址的网页:?HTTP错误404”抱歉-我原来的答案是错误的。我刚刚测试了上面的,它应该对你有用。再次感谢。这是一个令人头痛的问题。现在看起来很正常,但是我在控制台上从我的控制器方法获得了“从UI:0传递的Load ID”,但是我在UITried url上的通知中也获得了正确的loadId:,并且获得了相同的1。在上面的jQuery$.ajax(…)
语句上设置一个断点,并检查loadId
的值,例如这里的值为5。查看开发人员工具的“网络”选项卡中的HTTP请求,并检查查询字符串上的loadId
参数是否匹配,例如我们的示例中的5。
$.ajax({
url: 'https://localhost:44346/home/Download/',
type: 'GET',
data: {
loadId: getLoadId()
}
}).done(function() {
DevExpress.ui.notify("Downloading results for Load ID: " + loadId, "info", 1500);
});