如何从Ajax回发重定向到登录页面?

时间:2011-06-29 14:36:46

标签: ajax asp.net-mvc-3 forms-authentication

我在MVC 3应用程序上工作。我的cshtml页面如下所示:

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

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

使用Authorize属性标记的Filter()操作方法此时返回一些字符串。一切正常但是当表单身份验证票证到期并且我点击了btn_Filter按钮时,我的登录页面会在div_GridPlaceholder中呈现,这很奇怪。我想在整个页面上看到Login页面,而不是在div中。 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

在您的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")';
        }
    });
});