在ASP.Net内核中使用AJAX/JQuery向控制器发送参数时出现问题

在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

在此方面的任何帮助都将不胜感激。我的UI上有一个datagrid和一个下载按钮。当用户在网格中选择一行并单击下载时,它应该将int id作为参数传递给控制器上的下载方法,从而触发进一步的处理

我已经尝试过使用Ajax/JQuery来实现这一点,但遗憾的是,我是一个新手,我一直将0传递给controller。它正确地选择了我的id,因为我有一个警报,显示每个选择的正确id。我在检查铬时没有发现任何错误

请参见以下相关代码:

//html

            <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);
});