我在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中。 任何帮助表示赞赏。
答案 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")';
}
});
});