asp.net mvc4 ajax登录:RedirectToAction不能正常工作

时间:2012-03-18 06:22:41

标签: asp.net ajax login

我尝试使用输入到jquery ui对话框中的凭据进行ajax调用登录。

ajax调用正确记录用户并成功到达返回RedirectToAction(“Index”,“Home”)调用。但是,用户没有立即看到他们已登录。我必须刷新_LoginPartial状态栏的页面,以便从Register / Login切换到Username / Logout。

我认为RedirectToAction(“Index”,“Home”)调用会刷新页面。 我试图将其切换到RedirectToAction(“索引”,“其他一些页面”),虽然它通过指定的操作方法运行但不会重定向到该页面。

这是ajax调用:

          $.ajax({
                            url: "/Account/Login",
                            type: "POST",
                            data: JSON.stringify($('#loginForm').serializeObject()),
                            dataType: 'json',
                            contentType: "application/json; charset=utf-8",
                            complete: function () {
                                $('.dialogContainer').dialog("close");
                            }
                        });

控制器:

    [HttpPost]
    public ActionResult Login(LoginModel model, string returnUrl)
    {

        if (ModelState.IsValid)
        {
            if (Membership.ValidateUser(model.UserName, model.Password))
            {
                FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
                if (Url.IsLocalUrl(returnUrl))
                {
                    return Redirect(returnUrl);
                }
                else
                {
                    return RedirectToAction("Index", "Home");
                }
            }
            else
            {
                ModelState.AddModelError("", "The user name or password provided is incorrect.");
            }
        }

        // If we got this far, something failed, redisplay form
        return View(model);
    }

1 个答案:

答案 0 :(得分:1)

执行Ajax调用时,

RedirectToAction不起作用。出于同样的原因,ajax调用不会导致页面刷新,因此RedirecToAction也不会导致页面重定向。您正在重定向Ajax请求,而不是页面。

您必须向ajax调用返回某种成功指示,并让您的ajax调用重定向该页面。