回到目錄
這個問題出現了很多年了,都沒有解決,問題是這樣的,有一個需要授權才可以通路的分部視圖,在一個view中使用ajax的方法去調用它,然後更新頁面的局部DIV,這時,如果你長時間不操作,session會逾時,這是正常的,但在逾時時,如果你再調用ajax方法,這時你的頁面跳轉将會在DIV局部完成,這是我們不希望看到的!
事實上,引起這個問題的原因是MVC内部跳轉機制的問題,它隻到在目前的action所渲染的view上進行跳轉,如果我們希望在目前頁面跳,需要将MVC方法改為JS方法,代碼如下
filterContext.Result = new RedirectToRouteResult("Default", new RouteValueDictionary {
{ "Action",_failActionName },
{ "Controller", _failControllerName},
{ "returnUrl", returnUrl} });
修改成JS的方式
string url = new UrlHelper(filterContext.RequestContext).Action(
_failActionName,
_failControllerName,
new
{
returnUrl = returnUrl
});
//防治ajax調用分部視圖出現登陸逾時,在局部跳轉URL的問題
filterContext.HttpContext.Response.Write("<script>location.href='" + url + "'</script>");
filterContext.HttpContext.Response.End();
這幾行代碼就可以解決幾年困擾我的問題了,是以,對于一個問題的解決需要我們仔細去研究,去思考!
作者:倉儲大叔,張占嶺,
榮譽:微軟MVP
QQ:853066980
支付寶掃一掃,為大叔打賞!
