2013年9月11日 星期三

ASP.NET 中關於 Postback 與離開頁面的分辨



大家在使用Asp.net開發應用系統時,有時會存在這樣的場景,當頁面離開時需要清空Session等等一系列的後序操作。

如果大家使用後台代碼清空Session,那麼當頁面離開時是不會Postback頁面的,問題就出在這裡,那麼我們只能從前台入手了,可以使用前台事件window.onunload,沒有問題,我們繼續,當我們正常的載入Asp.Net頁面,點擊一個Button,頁面PostBack之前每次都會觸發onunload事件,那麼我們如何才能在前台利用onunload事件分析出在什麼情況下是postback,什麼情況下是離開呢?

    var isSubmit = false;
    $(document).ready(function () {
        document.forms[0].onsubmit = SubmitFun;
        window.onunload = CheckAction;
    });
 
    function SubmitFun()
    {
        isSubmit = true;
    }
 
    function CheckAction() {
        if (!isSubmit) {

            var guid = $('#<%=hfGuid.ClientID %>').val();
            
            // ajax 執行刪除某一系列 Session 的動作
            // $.get('<%=ResolveClientUrl("...")%>', function () { });
            
            alert("is leave");
            //to do 
            //for example use the ajax invoke service method to clean session 
        }
        else {
            alert("is submit");
            //to do
        }
    }

我們結合使用window.onunload與form.onsubmit兩個事件來完成分辨,當提交一個form時,觸發onsubmit事件,我們在這個事件處理方法中,將isSubmit置為true,在onunload事件中,根據isSubmit去分辨是提交頁面還是頁面離開,由於onunload事件總是在onsubmit事件之後執行,所以可以保證得到正確的結果。

 在註釋處我們可以添加自己想要的代碼,例如使用ajax調用後台方法等等...


引用:Web系统中关于Postback与页面离开的分辨

沒有留言 :

張貼留言

Related Posts Plugin for WordPress, Blogger...