使用ASP.NET 3.5 Extensions管理浏览器历史:使用服务器端

简介:

我们知道当我们使用ASP.NET AJAX的一些方便的服务端控件如UpdatePanel,我们的浏览器不能保存这些异步浏览的页面状态,而ASP.NET3.5 Extensions给我们提供了一个解决方法,下面演示一下使用实例:

一:简单示例

1. 首先下载安装ASP.NET 3.5 Extensions

2.新建一个ASP.NET3.5 Extensions Web Application

image

3. 向页面拖动一个ASP.NET3.5 Extensions下的ScriptManger和UpdatePanel

image

4. 修改Default.aspx,注意黄色部分

EnableHistory默认是false,要设为true, EnablestateHash就是地址栏是否加密

image

5. 修改Default.aspx.cs

image

当我们需要保存信息时,添加一个历史点,保存供还原时使用的一些信息,然后当点击后退按钮时,会执行ScriptManager_Navigate来使用我们保存的信息。

6.效果

image image

7.原理

我们看一下页面的源码,发现如果我们EnableHistory="true",会自动给我们页面添加一个Iframe,当我们后退,前进时这些还原点是更改Iframe.

image

二、分页示例:

1.修改页面Default.aspx如下:

image

2. 修改页面Default.aspx.cs如下:

我们添加一个List来提供数据源,完整代码如下:

using  System;
using  System.Collections;
using  System.Configuration;
using  System.Data;
using  System.Linq;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.HtmlControls;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Xml.Linq;
using  System.Collections.Generic;
// Descirption: demo ajax history
// Created by: Jack Wang 

namespace  AjaxHistory
{
    
public partial class _Default : System.Web.UI.Page
    
{
        
private static string historyTime = "historyTime";
        
private  List<Student> students = new List<Student>();
        
protected void Page_Load(object sender, EventArgs e)
        
{
            
for (int i = 0; i < 20; i++)
            
{
                students.Add(
new Student { Name = "TestName" + i.ToString(), Address = "Street" + i.ToString(), age = i });
            }

            
if (!Page.IsPostBack)
            
{
                
this.GetData();
            }

        }

        
protected void mGetTimeButton_Click(object sender, EventArgs e)
        
{
            
this.mResultTimeLabel.Text = DateTime.Now.ToString();
            ScriptManager.GetCurrent(
this).AddHistoryPoint(historyTime, this.mResultTimeLabel.Text, DateTime.Now.Second.ToString());
        }
 

        
protected void ScriptManager1_Navigate(object sender, HistoryEventArgs e)
        
{
            
//restore time label
            if (!String.IsNullOrEmpty(e.State[historyTime]))
            
{
                
this.mResultTimeLabel.Text = e.State[historyTime].ToString();
            }
 

            
//restore gridview result
            if (!string.IsNullOrEmpty(e.State["gridviewResult"]))
            
{
                GridView1.PageIndex 
= Int32.Parse(e.State["gridviewResult"]);
                
this.GetData();
            }

        }
 

        
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        
{
            GridView1.PageIndex 
= e.NewPageIndex;
            
//just need save page index for history
            ScriptManager.GetCurrent(this).AddHistoryPoint("gridviewResult", e.NewPageIndex.ToString(), "gridviewResult"+e.NewPageIndex.ToString());
            
this.GetData();
        }
 

        
public void GetData()
        
{
            GridView1.DataSource 
= students;
            GridView1.DataBind();
        }

    }
 

    
public class Student
    
{
        
public string Name getset; }
        
public int age getset; }
        
public string Address getset; }
    }

}
 

 

3.效果:

image

本文示例代码下载:http://files.cnblogs.com/cnblogsfans/AjaxHistory.rar

我的这篇博客里写了使用ASP.NET 3.5 Extensions管理浏览器历史:使用客户端

本文转自敏捷的水博客园博客,原文链接http://www.cnblogs.com/cnblogsfans/archive/2008/04/08/1142182.html如需转载请自行联系原作者


王德水

相关文章
|
运维 Prometheus 监控
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
|
开发框架 JavaScript 前端开发
震撼!破解 ASP.NET 服务器控件 Button 执行顺序之谜,颠覆你的开发认知!
【8月更文挑战第16天】在ASP.NET开发中,通过Button控件实现先执行JavaScript再触后台处理的需求十分常见。例如,在用户点击按钮前需前端验证或提示,确保操作无误后再传递数据至后台深度处理。此过程可通过设置Button的`OnClientClick`属性调用自定义JavaScript函数完成验证;若验证通过,则继续触发后台事件。此外,结合jQuery也能达到相同效果,利用`__doPostBack`手动触发服务器端事件。这种方式增强了应用的交互性和用户体验。
232 8
|
开发框架 .NET C#
在 ASP.NET Core 中创建 gRPC 客户端和服务器
本文介绍了如何使用 gRPC 框架搭建一个简单的“Hello World”示例。首先创建了一个名为 GrpcDemo 的解决方案,其中包含一个 gRPC 服务端项目 GrpcServer 和一个客户端项目 GrpcClient。服务端通过定义 `greeter.proto` 文件中的服务和消息类型,实现了一个简单的问候服务 `GreeterService`。客户端则通过 gRPC 客户端库连接到服务端并调用其 `SayHello` 方法,展示了 gRPC 在 C# 中的基本使用方法。
343 5
在 ASP.NET Core 中创建 gRPC 客户端和服务器
|
网络协议 Unix Linux
一个.NET开源、快速、低延迟的异步套接字服务器和客户端库
一个.NET开源、快速、低延迟的异步套接字服务器和客户端库
308 4
|
监控 网络安全 调度
Quartz.Net整合NetCore3.1,部署到IIS服务器上后台定时Job不被调度的解决方案
解决Quartz.NET在.NET Core 3.1应用中部署到IIS服务器上不被调度的问题,通常需要综合考虑应用配置、IIS设置、日志分析等多个方面。采用上述策略,结合细致的测试和监控,可以有效地提高定时任务的稳定性和可靠性。在实施任何更改后,务必进行充分的测试,以验证问题是否得到解决,并监控生产环境的表现,确保长期稳定性。
1201 1
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
507 0
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
308 7
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
402 0

热门文章

最新文章