1

私はこれを理解しようとしてインターネットのいたるところにいました。ユーザーをログインするアクションを呼び出し、ログインに成功するとユーザーをプロファイルページにリダイレクトするjqueryダイアログウィンドウを追加しようとしています。この時点まで、ログイン部分は機能しているように見えますが、アクションが戻ると、ユーザーは同じページに留まります。ログインの成功を判断して適切にリダイレクトするには、どのような変更を加える必要がありますか? これが私のコードです:

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

1 に答える 1

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);
    }
于 2012-11-03T01:09:50.800 に答える