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")",
我的问题是为什么会发生这种情况?为什么保存用户的凭据会导致这种奇怪的行为?请注意,应用程序的其余部分运行良好。
提前感谢!
查看答案的注释