如何防止“返回错误”;在ajaxSubmit中与ASP.NET MVC RedirectToAction冲突

时间:2012-02-07 07:58:11

标签: javascript jquery asp.net-mvc

我一定错过了一些明显的东西......

我有一个标准的ASP.NET MVC3登录操作正常工作。如果用户/密码匹配,则FormsAuthentication执行其SetCookie例程并按预期执行RedirecToAction,否则返回设置模型状态错误并将模型返回到视图。因此,这适用于禁用Javascript。

我现在正在尝试添加jQuery.Form插件来执行ajaxSubmit,如果用户没有使用匹配的用户/密码组合显示错误。

$(document).ready(function () {
        var options = {
            success: showResponse
        };

        $('#formLogon').submit(function () {
            $(this).ajaxSubmit(options);
            // return false;
        });

        function showResponse() {
            $("#loginError").show();                             
        }
    });

我的问题是,如果我取消注释“return false;”在ajaxSubmit之后,当调用showResponse函数时,错误div正确显示。但是,如果提交了正确的用户名/密码,则永远不会重定向用户,因为重定向被截获(但我在Fiddler中看到了GET调用,因此我知道重定向正在发出请求)。

我尝试移动“返回假”;进入showResponse函数但它不起作用,在ajaxSubmit之后没有返回false,MVC重定向在回调之前启动并且错误div从未显示。

这不是我正在尝试做的正确实施吗?

1 个答案:

答案 0 :(得分:0)

您应该尝试查看jQuery的$ .ajax函数。使用此功能,您可以定义回调。

以下是应该发生的事情 提交时总是返回false 当用户输入登录时发出ajax请求。 如果用户输入了正确的登录信息,请删除提交功能并使用$(this).submit进行提交。 (使用$ .ajax的回调) 然后把返回假回来。

这是一个肮脏的修复,但我认为它会起作用