Ajax调用MVC控制器方法的奇怪行为

本文关键字:方法 调用 MVC 控制器 Ajax | 更新日期: 2023-09-27 18:29:58

我在MVC、Ajax和保存的凭据方面遇到了一些奇怪的行为。虽然我还有一项工作要做,但我想知道是否有人能帮助我了解问题所在

我使用DataTablesjQuery插件来显示对Controller的操作方法的调用结果。以下是该呼叫的示例:

$('#grdTournamentList').on('init.dt', function () {
     $("input[name='TournamentSelect']").on("change", function () {
            $('#btnMoveNextStep1').removeAttr("disabled");
            });
     }).DataTable({
            "ajax": {
                 "type": "POST",
                 "contentType": "application/json; charset=utf-8",
                 "url": "QuickStart/TopTenMostRelevantTournaments",
                 "data": {},
                 "dataType": "json",
                 "dataSrc": ""
                }
      });
});

如果我在用户第一次登录期间按原样使用代码(允许凭据保存在本地),则TopTenMostRevantTournaments方法调用成功,并填充网格。

请求:/XXX/XXXXXXX/快速启动/TopTenMostRevantCourtnaments

如果用户关闭浏览器并尝试返回,则保存的凭据将绕过登录并将用户带到包含网格的视图。此时,对控制器的调用失败。在调试它时,我发现为ajax调用生成的URL是不正确的。控制器出现两次:

请求:/XXX/XXXXXXX/快速启动/快速启动/TopTenMost相关法庭

如果我在设置URL时将ajax调用更改为使用Razor@URL.Action方法。呼叫工作正常。

"url": "@Url.Action("TopTenMostRelevantTournaments", "QuickStart")",

我的问题是为什么会发生这种情况?为什么保存用户的凭据会导致这种奇怪的行为?请注意,应用程序的其余部分运行良好。

提前感谢!

Ajax调用MVC控制器方法的奇怪行为

查看答案的注释