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

时间:2014-11-11 13:35:56

标签: c# jquery ajax asp.net-mvc

我在使用MVC,Ajax和保存的凭据时遇到了一些奇怪的行为。虽然我有一个解决方法,但我想知道是否有人可以帮我理解问题所在。

我正在使用DataTables jQuery插件来显示对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": ""
                }
      });
});

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

请求:/ XXXX / XXXXX / 快速入门 / TopTenMostRelevantTournaments

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

请求:/ XXXX / XXXXX / 快速入门/快速入门/ TopTenMostRelevantTournaments

如果我在设置URL时更改了ajax调用以使用Razor @ URL.Action方法。通话无故障。

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

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

提前致谢!

1 个答案:

答案 0 :(得分:0)

查看答案的评论