Вернуть ActionResult, который перенаправляет на другой контроллер? - PullRequest
0 голосов
/ 10 января 2019

У меня есть контроллер с именами LoginController и HomeController. Внутри LoginController у меня есть LoginAsync функция, которая выглядит следующим образом:

 [HttpPost]
 public async Task<ActionResult> LoginAsync(string username, string password)
 {
      ...

      var apiResponse = JsonConvert.DeserializeObject<APIResponse>(result);
      if (!apiResponse.IsSuccessful)
      {
           return Content(apiResponse.Message);
      }

      ...

      return RedirectToAction("Index", "Home", new { area = "Index" });
 }

И вызывается через AJAX в функции LoginAsync в LoginController:

 <script type="text/javascript">
      $(document).ready(function () {
           $('#Login').click(function () {
                $.ajax({
                     url: "Login/LoginAsync",
                     type: "POST",
                     data: { username: document.getElementById('txtUsername').value, password: document.getElementById('txtPassword').value },
                     async: true,
                     success: function (data) {
                        alert(data);
                    //window.location.href = "Home";
                },
            });
        });
    });
</script>

По какой-то причине строчка return RedirectToAction(...) срабатывает, но страница не перенаправляет на домашнюю страницу, как я и думал. Что меня действительно смущает, так это строка Ajax alert(data);, показывающая HTML-контент для домашней страницы - страницы, на которую я хочу перенаправить. Поэтому после того, как я нажму кнопку, чтобы запустить Ajax, вместо перехода на домашнюю страницу, он просто выскакивает HTML-код домашней страницы и остается на странице входа в систему.

Как сделать так, чтобы LoginAysnc перенаправлял в HomeController / Index view?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...