RedirectToAction не работает во время аутентификации формы mvc3 с помощью jquery - PullRequest
0 голосов
/ 26 сентября 2011

Я столкнулся с проблемой на моем экране входа в систему моего приложения, которое разработано с помощью mvc3 и jquery, так как я пишу код для проверки учетных данных входа в систему в контроллере, и это событие контроллера запускается путем нажатия кнопки, которая была разработана. используя jquery. Я хотел бы перейти на другую страницу ('/ Customer / CollaborationPortal'), когда учетные данные для входа верны, в противном случае я хочу отобразить окно с сообщением о том, что «учетные данные неверны», и это мой код.

Код JQuery

$("#btnGo").click(function (e) {
                   var RegData = getRegData();
                if (RegData === null) {
                    console.log("Specify Data!");
                    return;
                }

                $.ajax(
                        {
                            url: '/Registration/IsLoginExsit',
                            type: 'POST',
                            dataType: 'json',
                            data: JSON.stringify(RegData),
                            contentType: 'application/json; charset=utf-8',
                            success: function (response) {
                              //window.location.href('/Customer/CollaborationPortal');
                                  Console.Log("success");
                                error: function () {
                                    //aler('Login error');
                                  Console.Log("error");
                                }
                            }



                        });
            });
            function getRegData() {

                var UserName = $("#txtUserName").val();
                var Password = $("#txtPassword").val();
                return { "UserName": UserName, "Password": Password };
            }

        });

Код контроллера

public ActionResult IsLoginExsit(BAMasterCustomerDO loginData)
{
  if (!string.IsNullOrEmpty(loginData.UserName) && !string.IsNullOrEmpty   (loginData.Password))
      {

         bool result = Businesss.Factory.BusinessFactory.GetRegistration().IsLoginExist(loginData.UserName, loginData.Password);
                if (result)
                {
                      System.Web.HttpContext.Current.Session["UserName"]=loginData.UserName;
                       return RedirectToAction("/Customer/CollaborationPortal");


                  }
                  else
                  {                   

                      ViewData["message"] = "Registration failed";
                       return View();
                   }
        }

        return View();

    }

и также не входит в код "успеха" и "ошибки".

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 26 сентября 2011

У вас есть функция ошибки внутри функции успеха ....

Это то, что вы должны иметь:

$.ajax(
    {
    url: '/Registration/IsLoginExsit',
    type: 'POST',
    dataType: 'json',
    data: JSON.stringify(RegData),
    contentType: 'application/json; charset=utf-8',
    success: function (response) {
        //window.location.href('/Customer/CollaborationPortal');
        Console.Log("success");
    },
    error: function () {
        //aler('Login error');
        Console.Log("error");
    }
});
0 голосов
/ 26 сентября 2011

На вашем месте я бы возвратил объект JSON клиенту так:

Успех:

{
    'error' : false,
    'redirect' : '/Customer/CollaborationPortal',
    'message' : ''
}

Ошибка:

{
    'error' : true,
    'redirect' : false,
    'message' : 'Please do this or that'
}

МойJQuery будет:

            $.ajax(
                    {
                        url: '/Registration/IsLoginExsit',
                        type: 'POST',
                        dataType: 'json',
                        data: JSON.stringify(RegData),
                        contentType: 'application/json; charset=utf-8',
                        success: function (response) {
                            if (response.error)
                            {
                                alert(response.message);
                                return;
                            }
                            window.location.pathname = response.redirect;
                        }
                    });
0 голосов
/ 26 сентября 2011

вы указали обратный вызов ошибки внутри успешного обратного вызова, переместите его снаружи как:

$.ajax(
{
url: '/Registration/IsLoginExsit',
type: 'POST',
dataType: 'json',
data: JSON.stringify(RegData),
contentType: 'application/json; charset=utf-8',
success: function (response) {
//window.location.href('/Customer/CollaborationPortal');
console.log("success");
},
error: function () {
//alert('Login error');
console.log("error");
}
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...