2012-03-18 3 views
1

jquery UIダイアログに入力された資格情報を使用してログインするためにajax呼び出しを試みています。asp.net mvc4 ajax login:RedirectToActionが動作しない

ajaxコールでは、ユーザーが正しくログに記録され、リターンRedirectToAction( "Index"、 "Home")コールに成功します。しかし、ユーザーはすぐにはログインしていないことがわかります。_LoginPartialステータスバーのページを更新して、Register/LoginからUsername/Logoutに切り替える必要があります。

私はRedirectToAction( "Index"、 "Home")呼び出しがページを更新すると思います。 RedirectToAction( "Index"、 "Some other page")に切り替えようとしましたが、指定されたアクションメソッドを実行してもそのページにリダイレクトされません。ここで

は、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"); 
          } 
         }); 

コントローラ:Ajax呼び出しを行うとき

[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

RedirectToActionは動作しません。同じ理由でajax呼び出しでページがリフレッシュされないため、RedirecToActionもページをリダイレクトしません。ページではなく、Ajaxリクエストをリダイレクトしています。

あなたはajaxコールに何らかの成功の指標を返さなければならず、あなたのajaxコールでページをリダイレクトする必要があります。

関連する問題