Как перенаправить на страницу входа с обратной передачи Ajax? - PullRequest
0 голосов
/ 29 июня 2011

Я работаю над приложением MVC 3. Моя cshtml страница выглядит так:

@Ajax.BeginForm("Filter", new AjaxOptions() { UpdateTargetId = "div_GridPlaceholder")
{
...some HTML
<input id="btn_Filter" type='submit' ... />
}

<div id="div_GridPlaceholder">...</div>

Метод действия Filter (), помеченный атрибутом Authorize, возвращает некоторую строку в данный момент. Все работает нормально, но когда истекает срок билета аутентификации форм, и я нажимаю кнопку btn_Filter, моя страница входа отображается в div_GridPlaceholder, что довольно странно. Я хотел бы, чтобы страница входа отображалась на всей странице, а не внутри этого div. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 29 июня 2011

В вашем действии Logon вы можете добавить собственный HTTP-заголовок ответа:

public ActionResult LogOn()
{
    Response.AppendHeader("X-LOGON", "true");
    return View();
}

, а затем подписаться на полное событие и проверить наличие этого заголовка и действовать соответственно:

$(function () {
    $('#div_GridPlaceholder').ajaxComplete(function (event, XMLHttpRequest, ajaxOptions) {
        if (XMLHttpRequest.getResponseHeader('X-LOGON') == 'true') {
            window.location.href = '@Url.Action("LogOn", "Account")';
        }
    });
});
...