zoukankan      html  css  js  c++  java
  • 让 ASP.NET AJAX 支持浏览器的 History Navigation Part 2

    续前一篇文章「让 ASP.NET AJAX 支持浏览器的 History Navigation - Part 1」,之前介绍的是用 History 控件的做法,虽然可适用 ASP.NET 2.0 及之后所有 .NET 版本的网页,但必须多经一次安装 Future 套件,或多做一次引用 Microsoft.Web.Preview.dll 的动作,毕竟较不方便。本帖介绍的是 ASP.NET 3.5 SP1 / VS 2008 SP1 的做法,直接引用已经内建在新版 ScriptManager 控件内的 History Navigation 功能,达成和上一篇文章相同的效果。

    如 Dino Esposito 在这篇文章所说的:
    http://dotnetslackers.com/articles/aspnet/AFirstLookAtASPNETExtensions35HistoryPoints.aspx

    在已安装 VS 2008 SP1 的网站里 (等同已安装 .NET 3.5 SP1),先启用 ScriptManager 内建的 History Navigation 功能,并建立 ScriptManager1_Navigate 事件处理函数,如下:

    ScriptManager


    之后只要使用者在 URL 网址中做 Navigate 时 (如本帖下载示例中,在 UpdatePanel 中的 GridView 按页码换页后,再按浏览器的「上一页」时),就会触发此一事件。
     ScriptManager..::.Navigate Event:
     Occurs when the user clicks the browser's Back or Forward button.


    接下来,程序员就要在 Code-Behind 中撰码,在适当时机加入 History Point。以本帖下载示例而言,就是在 GridView1_PageIndexChanged 事件处理函数中,撰码加入 History Point。此后,当使用者在做 URL Navigate 时,例如像本例中,单击 GridView 的页码换页时,新版的 ScriptManager 控件就会在 URL 网址后面,加上一串看似乱码的 user state。如本帖的前一篇文章所提过的,这串浏览器的 navigating 历程信息,会经过「序列化 (serialization)」并加密后,再附加在 URL 网址后方,以供浏览器作为辨识之用。

    ----------------------------------------
    本帖的 ASP.NET 3.5 + SP1 示例代码下载点:
    https://files.cnblogs.com/WizardWu/081005.zip
    (执行本示例,需要 VS 2008 SP1 + SQL Server 的 Northwind 数据库)
    ----------------------------------------

    这个示例和传统的 AJAX + GridView 网页,有几个不同点:

    1、当 GridView 换页时,IE (或 Firefox) 左上方的「上一页、下一页」按钮会自动启用;若为传统的 AJAX 网页则不会。

    2、假设您换页到 GridView 的第二页 (或其它任何一页),此时若再进到别的页面,再按浏览器左上方的「上一页」回来时,GridView 仍会停在第二页;若为传统的 AJAX 网页则不然,而是一律跳回 GridView 的第一页。

    3、当 GridView 换页后,此时若将该页加入浏览器的「书签 (bookmark)」,会一并记录是在 GridView 的哪一页;若为传统的 AJAX 网页则不会记录。

    4、搭配 FormView、DetailsView 控件使用时,在改变这两个控件的状态时 (Insert、Edit、ReadOnly mode),亦能记录页数和 state (这点版工我未测试成功)。

    5、搭配 ASP.NET 的 Wizard 控件使用时,亦能记录页数和 state (这是 Dino 讲的,这点版工我未试过)。

    Default.aspx
    Default.aspx.cs


     
     ---------------------------------------------------------------------------------
     
     参考文件:
     
     [1] MSDN Library, 「ScriptManager.Navigate Event (System.Web.UI)」:
     http://msdn.microsoft.com/en-us/library/system.web.ui.scriptmanager.navigate.aspx
     
     [2] MSDN Library, 「ScriptManager..::.AddHistoryPoint Method 」:
     http://msdn.microsoft.com/en-us/library/system.web.ui.scriptmanager.addhistorypoint.aspx

     
     [3] Dino Esposito, 「A First Look at ASP.NET Extensions 3.5—History Points」:
     http://dotnetslackers.com/articles/aspnet/AFirstLookAtASPNETExtensions35HistoryPoints.aspx

     


  • 相关阅读:
    PHP中simpleXML递归实现XML文件与数组的相互转化(原创)
    关于本地服务器localhost请求Forbidden解决办法
    PHP中XPATH 实现xml及html文件快速解析(附xml做小型数据库实现六级单词快速查询实例)
    win8忘记开机密码解决方法汇总
    HTML5的FileAPI实现文件的读取及超大文件的上传
    FormData实现form表单的数据打包
    Ajax_iframe文件上传
    深入浅出JSONP--解决ajax跨域问题
    2017ACM暑期多校联合训练
    2017ACM暑期多校联合训练
  • 原文地址:https://www.cnblogs.com/WizardWu/p/1304002.html
Copyright © 2011-2022 走看看