Удар RedirectToAction, но не перенаправление - PullRequest
0 голосов
/ 06 марта 2019

Мое перенаправление на действие попадает в метод в контроллерах чата / индекса, но фактически не перенаправляет пользователя, оно просто остается на той же странице. Как это исправить? Я могу перейти к просмотру через URL, чтобы не было ошибок в этом отношении.

Контроллер чата

    [Authorize]
    public ActionResult ChatRoom()
    {
        return View();
    }

Домашний контроллер

  [AllowAnonymous]
  public ActionResult Index()
        {
            return View();
        }

    [HttpPost]
    [AllowAnonymous]
    public ActionResult Login(String username, String password)
    {
        bool ValidUser = UserDBController.ValidateUser(new Models.UserModel
        {
            UserName = username,
            PasswordHash = HashPass(password)
        });

        password = String.Empty;

        if (ValidUser)
        {
            FormsAuthentication.SetAuthCookie(username, true);
            return RedirectToAction("ChatRoom", "ChatRoom");
        }
        ViewBag.Username = username;
        return RedirectToAction("Index","Home");
    }

Индекс

    @{
    ViewBag.Title = "Home Page";
}

<div class="container">
    @Html.Partial("_LoginPartial")
</div>

Частичный вход в систему

@{
    ViewBag.Title = "Login";
}


<div class="LoginForm">
    <div class="row">
        <div class="col-md-12 input">
            @Html.TextBox("Username", null, new { @class = "form-control", @id = "username", @placeholder = "Username", required = "required", value = !String.IsNullOrEmpty(ViewBag.username) ? ViewBag.username : "" })
        </div>
    </div>
    <div class="row">
        <div class="col-md-12">
            @Html.TextBox("Password", null, new { @class = "form-control", @type = "password",  @id = "password", @placeholder = "Password", required = "required" })
        </div>
    </div>
    <button type="button" class="login-btn btn btn-primary">Login</button>
</div>

Jquery

$('.login-btn').click(function (e) {
    $.ajax({
        type: "POST",
        url: "/Home/Login",
        data: {
            userName: $('#username').val(),
            password: $('#password').val()
        }
    }).done(function (data) {
    });
});

Ответы [ 2 ]

3 голосов
/ 06 марта 2019

Это потому, что вы делаете пост Ajax. Вы можете вернуть URL в результате и использовать этот URL для перенаправления.

2 голосов
/ 06 марта 2019

Изменение функции входа в систему

[AcceptVerbs(HttpVerbs.Post)]
public JsonResult Login(String username, String password)
{
    ...

    if (ValidUser)
    {
        FormsAuthentication.SetAuthCookie(username, true);
        return Json(false, JsonRequestBehavior.AllowGet);
    }
    return Json(true, JsonRequestBehavior.AllowGet);
}

и метода AJAX

$('.login-btn').click(function (e) {
        $.ajax({
            type: "POST",
            url: "/Home/Login",
            data: {
                userName: $('#username').val(),
                password: $('#password').val()
            },
            succcess:function (myJSONdata) {
                if(myJSONdata == true)
                    location.href = '/ChatRoom/ChatRoom';
                else
                    location.href = '/Home/Index';
            }
        }).done(function (data) {
        });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...