我尝试使用输入到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);
}
答案 0 :(得分:1)
RedirectToAction不起作用。出于同样的原因,ajax调用不会导致页面刷新,因此RedirecToAction也不会导致页面重定向。您正在重定向Ajax请求,而不是页面。
您必须向ajax调用返回某种成功指示,并让您的ajax调用重定向该页面。