- 浏览: 255593 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (293)
- web (1)
- [随笔分类]项目管理 (30)
- [随笔分类]WCF (14)
- 未分类 (1)
- [随笔分类]Linq (4)
- [随笔分类]C#基础 (24)
- 项目 (1)
- [网站分类]3.非技术区(技术之外的文章,但不要涉及任何政治内容) (8)
- [网站分类]1.首页原创精华.NET区(包含架构设计、设计模式)(对首页文章的要求:原创、高质量、经过认真思考并精心写作) (9)
- [随笔分类]Ubuntu (4)
- ASP.Net (1)
- [网站分类]2..NET新手区(用于发表不合适发表在首页的.NET技术文章,包括小经验、小技巧) (30)
- [随笔分类]ASP.NET MVC (20)
- [随笔分类]ASP.NET (3)
- [随笔分类]程序员厨房 (4)
- [随笔分类]英语学习 (28)
- [网站分类]4.其他技术区 (1)
- [随笔分类]Silverlight (12)
- [随笔分类]CodeSmith (8)
- [随笔分类]其他 (4)
- [随笔分类]Ruby (4)
- [发布至博客园首页] (34)
- [网站分类]其他技术区 (3)
- [随笔分类]Ruby on Rails (2)
- [网站分类].NET新手区 (33)
- [随笔分类]TDD (1)
- [随笔分类]不谈技术 (2)
- [网站分类]非技术区 (7)
最新评论
-
yicone:
You make a mistake when paste t ...
WCF步步为营(一):简单示例 -
jinweijie:
你好,这个实现不错,但是在用了scriptmanager以后就 ...
在服务器端保存ViewState
我们知道当我们使用ASP.NET AJAX的一些方便的服务端控件如UpdatePanel,我们的浏览器不能保存这些异步浏览的页面状态,而ASP.NET3.5 Extensions给我们提供了一个解决方法,下面演示一下使用实例:
一:简单示例
1. 首先下载安装ASP.NET 3.5 Extensions
2.新建一个ASP.NET3.5 Extensions Web Application
3. 向页面拖动一个ASP.NET3.5 Extensions下的ScriptManger和UpdatePanel
4. 修改Default.aspx,注意黄色部分
EnableHistory默认是false,要设为true, EnablestateHash就是地址栏是否加密
5. 修改Default.aspx.cs
当我们需要保存信息时,添加一个历史点,保存供还原时使用的一些信息,然后当点击后退按钮时,会执行ScriptManager_Navigate来使用我们保存的信息。
6.效果
7.原理
我们看一下页面的源码,发现如果我们EnableHistory="true",会自动给我们页面添加一个Iframe,当我们后退,前进时这些还原点是更改Iframe.
二、分页示例:
1.修改页面Default.aspx如下:
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 { get; set; }
public int age { get; set; }
public string Address { get; set; }
}
}
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 { get; set; }
public int age { get; set; }
public string Address { get; set; }
}
}
3.效果:
本文示例代码下载:http://www.cnblogs.com/Files/cnblogsfans/AjaxHistory.rar
我的这篇博客里写了使用ASP.NET 3.5
Extensions管理浏览器历史:使用客户端
发表评论
-
ASP.NET MVC源码现在可以下载了(翻译)
2008-03-22 09:44 935上个月我在blog里介绍了ASP.NET MVC Roadm ... -
ASP.NET MVC+LINQ开发一个图书销售站点
2008-03-29 17:12 1318园子里已经有很多人讲解了其理论知识,网上也有不少示例,但是很多 ... -
Linq to SQL Dynamic 动态查询
2008-04-01 15:09 1052在开发中我们常需要使用动态的条件来组合查询,scotte博客里 ... -
客户比产品更重要
2008-04-12 15:49 648发现博客园里99%都是技术文章,很少有管理的经验分享 ... -
WPF 全球化和本地化(图解)
2008-04-12 16:15 824当您将自己的产品限制为只能通过一种语言使用时,您便将潜在的客户 ... -
项目经理如何参与任务管理
2008-04-14 17:55 673每个项目经理可能都会 ... -
.NET环境下每日集成
2008-04-24 17:36 1377本系列主要介绍了.Net环境下如何使用CruiseContro ... -
项目经理虚拟管理客户
2008-05-28 11:26 555项目经理做项目时经常 ... -
从中国男足看项目管理
2008-06-16 11:39 427国足1:2 不敌伊拉克后,彻底无缘本届世界杯,我想比赛时和赛后 ... -
敏捷的 "道"
2008-11-19 14:10 505本文摘要 敏捷的路上 ... -
在服务器端保存ViewState
2008-11-20 16:51 5701.比较 Asp.net 的一个强大的功能就是ViewStat ... -
TDD实验2:使用VSTS 的单元测试功能
2008-12-10 08:25 794我们要实现的功能是,发工资时自动向我们发送邮件,如果工资少于1 ... -
TDD Tip:方法内部New出来的对象如何Mock
2008-12-16 00:27 1225解决的问题:方法内部new的对象在测试时希望能够用mock对象 ... -
Web测试:Selenium使用
2008-12-23 10:49 1613<style> .confluenceTable ... -
谈软件协作:君子和而不同,小人同而不和
2008-12-31 18:39 699我们知道现在的软件开 ... -
如何进行ASP.NET MVC 的测试
2009-01-05 00:48 1336本文参考了http://stephenwalther.com/ ... -
如何使ASP.NET MVC Controller易测试呢?
2009-01-05 23:25 976昨天那篇文章如何进行ASP.NET MVC 的测试,虽然通过自 ... -
ASP.NET MVC AJAX的调用
2009-01-10 08:21 3760在ASP.NET MVC beta中我们可以使用Ajax.Be ... -
IIS7 配置ASP.NET 2.0, WCF, ASP.NET MVC
2009-01-16 17:50 4629ASP.NET 2.0 部署 1.首先打开win7 的特性,路 ... -
一步一步学Ruby(一): Ruby介绍
2009-01-21 00:16 788文章摘要 Ruby是如何来的 准备 ...
相关推荐
1. **基础概念**:ASP.NET 3.5是.NET Framework 3.5的一部分,它提供了服务器端的编程模型,用于创建动态、交互式的Web应用程序。这个框架包括控件、数据绑定、事件处理和状态管理等特性。 2. **C#或VB.NET编程**:...
4. **AJAX支持**:ASP.NET 3.5引入了AJAX Extensions和AJAX Control Toolkit,使得开发者能够创建部分页面更新的应用程序,提供更好的用户体验。 5. **Web服务和WCF**:ASP.NET 3.5支持创建和消费Web服务,包括ASMX...
5. **AJAX支持**:ASP.NET 3.5引入了AJAX Extensions,使得开发者可以轻松创建部分页面更新的应用程序。书中可能会介绍UpdatePanel、ScriptManager、Timer等组件的使用。 6. **安全性**:包括身份验证、授权、角色...
此外,书中可能会涵盖关于Error Handling、State Management(状态管理)和Performance Optimization(性能优化)的话题,这些都是使用ASP.NET 3.5 AJAX时需要考虑的关键点。错误处理确保了在出现异常时能够优雅地...
7. **Ajax支持**:ASP.NET 3.5引入了AJAX Extensions和ASP.NET AJAX库,允许开发者创建部分页面更新,提升用户体验。了解UpdatePanel、ScriptManager、Timer等组件的用法是必要的。 8. **安全性**:包括身份验证...
"庖丁解牛ASP.NET3.5 控件组件开发技术光盘源码"是一个专门针对ASP.NET 3.5控件组件开发的学习资源,通过深入剖析和实例演示,帮助开发者理解和掌握该领域的核心技术。 首先,我们要理解ASP.NET 3.5中的控件组件。...
.Net 3.5 下使用的 System.Threading.Tasks。 安装完成后,添加引用时只需要在安装目录 C:\Program Files (x86)\Microsoft Reactive Extensions\Redist\DesktopV2 下找到 System.Threading.dll,添加即可
6. **AJAX支持**:ASP.NET 3.5引入了AJAX Extensions和UpdatePanel,使页面局部更新成为可能,提升用户体验。 7. **Web服务与WCF**:了解如何创建和消费Web服务,以及Windows Communication Foundation(WCF)提供...
1. Web Forms:ASP.NET 3.5中的核心组件之一,它允许开发者使用服务器控件和事件驱动模型来构建用户界面,类似于桌面应用程序的开发体验。 2. ASP.NET MVC:一种轻量级的Web应用开发模式,结合了Model(模型)、...
8. **AJAX支持**:ASP.NET 3.5引入了AJAX Extensions和ASP.NET AJAX Control Toolkit,提供了异步更新页面的能力,提高用户体验。 9. **Web服务和SOA**:ASP.NET支持创建和消费Web服务,实现服务导向架构(SOA),...
3. **Web Forms**:这是ASP.NET 3.5的主要开发模型,介绍了如何创建服务器控件、事件处理以及页面生命周期。 4. **ASP.NET MVC**:尽管3.5版本主要关注Web Forms,但可能会提及MVC模式,它是后来版本中引入的另一种...
5. **AJAX支持**:ASP.NET 3.5引入了AJAX Extensions和AJAX Control Toolkit,允许开发者创建部分页面更新的应用,提高用户体验。AJAX控件如UpdatePanel、ScriptManager等使得无需刷新整个页面就能更新特定区域。 6...
ASP.NET 3.5提供了内置的Ajax支持,通过System.Web.Extensions命名空间中的类和控件,如UpdatePanel、ScriptManager等,使得开发Ajax应用变得更加简单。理解Ajax的工作原理和如何在ASP.NET中集成Ajax,可以让你创建...
ASP.NET 3.5的核心是基于页面的模型,每个页面由一系列控件和服务器端代码组成。这些控件可以是HTML元素,也可以是自定义的服务器控件,如按钮、文本框等。页面生命周期包括初始化、加载、验证、呈现等多个阶段,...
4. **AJAX支持**:ASP.NET 3.5引入了AJAX Extensions,通过UpdatePanel、ScriptManager等控件实现局部刷新,提升用户体验。同时,理解jQuery和其他JavaScript库如何与ASP.NET结合也非常重要。 5. **MVC模式**:虽然...
本卷从最易于理解和使用的那部分入手,介绍ASP.NET AJAX框架中能够与传统ASP.NET无缝对接的服务器端部分,包括服务器端ASP.NET AJAX Extensions与ASP.NET AJAX Control Toolkit。这部分内容不需要读者有任何的客户端...
ASP.NET 3.5引入了AJAX Extensions和AJAX Control Toolkit,可以创建部分页面更新,提升用户体验。在留言本系统中,可能使用AJAX实现无刷新的留言加载或回复功能。 通过以上技术的综合运用,一个基于ASP.NET 3.5的...
第1章 使用ADO.NET3.5提供的新方法访问数据 第Ⅱ部分 LINQ简介 第2章 理解LINQ的体系结构和实现 第3章 使用LINQ to Objects执行LINQ查询表达式 第4章 使用高级查询操作符和表达式 第Ⅲ部分 使用领域相关的LINQ...
6. **AJAX支持**:ASP.NET 3.5引入了AJAX Extensions和jQuery库,使得开发者可以创建部分页面更新的应用,提高用户体验。 7. **MVC模式**:虽然不是ASP.NET 3.5的核心特性,但这个版本开始引入了ASP.NET MVC框架,...
本项目"ASP.NET 3.5 AJAX端框架打造桌面级邮件管理系统"就是基于这个技术实现的,旨在提供一个高效、用户友好的在线邮件管理平台。 该系统的核心特点在于利用AJAX(Asynchronous JavaScript and XML)技术,实现了...