2012-11-03 241 views
1

我一直在試圖找出這一個互聯網。我正在嘗試添加一個jQuery對話框窗口,該窗口將調用一個操作來登錄一個用戶,然後在成功登錄後,將用戶重定向到他們的配置文件頁面,否則保持對話框窗口打開並用相應的錯誤消息提示用戶。到目前爲止,登錄部分似乎可以工作,但當操作返回時,它將用戶保持在同一頁面上。我需要做出什麼改變才能確定一個成功的登錄和適當的重定向?這裏是我的代碼:ajax成功登錄後重定向

"Javascript code" 
$.validator.unobtrusive.parse('#LogOnForm'); 
$('#LogOnDialog').dialog({ 
    autoOpen: false, width: 450, height: 300, modal: true, 
    buttons: { 
     'Log On': function() { 
      if ($('#LogOnForm').validate().form()){ 
       $.ajax({ 
        url: '@Url.Action("LogOnPartial", "Account")', 
         type: 'POST', 
         data: $('form').serialize(), 
         datatype: 'json', 
         success: function (result) { 
          $('#LogOnDialog').html(result).dialog('open'); 
         } 
        }); 
       } 
      }, 
      Cancel: function() { 
       $(this).dialog('close'); 
      } 
     } 
    }); 




    $('#linkSignIn').live('click', function() { 
     $('#LogOnDialog').html('') 
     .dialog('option', 'title', 'Sign In') 
     .load('@Url.Action("LogOnPartial", "Account")', function() { $('#LogOnDialog').dialog('open'); }); 
    }); 



    "Controller Action" 
    [HttpPost] 
    public ActionResult LogOnPartial(LogOnModel model) 
    { 
     if (ModelState.IsValid) 
     { 
      UserPrincipal principal = new UserPrincipal(model.EmailAddress, model.Password); 
      HttpContext.User = principal; 
      FormsAuthentication.SetAuthCookie(model.EmailAddress, true); 
      return PartialView("LogOnPartial", model); 
     } 

     return PartialView("LogOnPartial", model); 
    } 

回答

2

我不知道你怎麼想實現這一點,但你得到你最有可能想回到您要登錄其剖析用戶的ID。

success: function (result) { 
          if(result=='')/// no result show the dialog again 
          { 
          $('#LogOnDialog').html(result).dialog('open'); 
          } 
          else // redirect to profile page 
          { 
           window.location = 'profile/'+result; 
          } 
        } 
       }); 

你的行動能像

public ActionResult ProvinceFilter(LogOnModel model) 
    { 
     string result=="";  
     UserPrincipal principal = new UserPrincipal(model.EmailAddress, model.Password); //in order to retorn exact error you must modify the principle to check if the user is valid or not and return specific error 
    if(principal==null) //or not valid 
     { 
     result="Your Username or Password is not correct"; 
     } 
     else 
     { 
     HttpContext.User = principal; 
     FormsAuthentication.SetAuthCookie(model.EmailAddress, true); 
     result=principal.UserID.ToString(); 
     } 
     return Json(result); 
    } 
+0

我應該我的行動看起來像兩個方案之間進行區分? – user1790300

+0

你需要使用ajax action/json return –

+0

從我上面的動作來判斷,我應該返回這個,不管ModelState.Valid是true還是false?如果它是假的,我希望用戶看到模式面板上有一些錯誤消息,讓他們知道他們做錯了什麼,無效的用戶/合格組合等,否則執行重定向。 – user1790300