ASP.NET Ajax – History Support 續

今天正好遇到一個已經快結束的項目需要添加Ajax History功能
項目並未使用微軟的Ajax,使用的是JQuery的Ajax,頁面加載完成後發出Ajax請求初始化。對於這種情況的改進方式如下:

pageLoad

        $(document).ready(function () {
Sys.Application.add_navigate(onNavigate);
Sys.Application.add_load(onLoad);
});

 

onNavigate

        function onNavigate(sender, e) {
//判斷是否為使用者觸發
//debugger;
if (window.userNavigated == undefined || userNavigated) {
restorePage(e.get_state());
}
}

 

onLoad處理首次進入頁面或者回退前進到首次進入頁面的數據加載

function loadPage() {
//your code

}

 

addHistoryPoint不變

        function addHistoryPoint() {
var pageState = { "foo": "foo", "bar": "bar"};
var historyPointName = "blah";
window.userNavigated = false;
Sys.Application.addHistoryPoint(pageState, historyPointName);
window.userNavigated = true;
}

 

restorePage修改

        function restorePage(pageState) {
//debugger;
if (!$.isEmptyObject(pageState)) {
// restore methord

}
else {
onLoad();
}
Sys.Application.remove_load(loadPage);
}

 

以上可以頁面內自由導航,也可以跨頁面導航回來。

這種改變後的方式,主要在於處理使用費微軟Ajax框架但還是使用ScriptManager管理History的情況。以前的方法缺點在於無法導航回到首次進入頁面的狀態。





posted on 2011-12-21 15:30    阅读(195)  评论(0编辑  收藏  举报