• 让 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

     


  • 相关阅读:
    ORACLE 如何产生一个随机数
    Oracle数据库一些操作信息
    EXP-00091和IMP-00010报错
    ORACLE数据库 memory_target SGA 大小
    linux如何查看端口被哪个进程占用的方法
    命令信息
    Linux负载均衡软件LVS
    oracle 字段信息
    oracle数据库的启动与关闭
    idea解除版本控制
  • 原文地址:https://www.cnblogs.com/WizardWu/p/1304002.html
Copyright © 2020-2023  润新知