文章出處

回到目錄

這個問題出現了很多年了,都沒有解決,問題是這樣的,有一個需要授權才可以訪問的分部視圖,在一個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();

這幾行代碼就可以解決幾年困擾我的問題了,所以,對于一個問題的解決需要我們仔細去研究,去思考!

回到目錄


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()