《 ASPNET数据库网站设计教程(C#版)》 配套教学资源 第5章 ASP NET的状态 管理 本章内容: ASPNET的状态管理包括使用 Cookie、 Session、 Application对象 实现状态管理,跨页存取数据,全局数据共享等 本章重点:使用 Cookie对象实现状态管理,使用 Session对象存、取数据, 使用 Application对象共享数据 圖王出妖社
第5章 ASP.NET的状态 管理 《ASP.NET数据库网站设计教程(C#版)》 配套教学资源 本章内容:ASP.NET的状态管理包括使用Cookie、Session、Application对象 实现状态管理,跨页存取数据,全局数据共享等。 本章重点:使用Cookie对象实现状态管理,使用Session对象存、取数据, 使用Application对象共享数据
51状态管理概述 所谓“状态管理”,是指使用 ASP. NET中的Ⅴ iewState、 Cookie、 Session和 Application等对象实现页面数据缓存和传 递的技术。 ASP.NET是一种无状态的网页连接机制,服务器处理客户 端请求的网页后,与该客户端的连接就中断了。此外,到 服务器端的每次往返都将销毁并重新创建网页,因此,如 果超出了单个网页的生存周期,网页中的信息将不复存在 也就是说,在默认情况下,服务器不会保存客户端再次请 求页面和本次请求之间的关系和相关数据 在C/S架构的应用程序中,使用全局变量即可很好地解决 这个问题,而在 ASPNEt环境中则需要使用与状态管理相 关的对象来保存用户数据
◼ 所谓“状态管理”,是指使用ASP.NET中的ViewState、 Cookie、Session和Application等对象实现页面数据缓存和传 递的技术。 ◼ ASP.NET是一种无状态的网页连接机制,服务器处理客户 端请求的网页后,与该客户端的连接就中断了。此外,到 服务器端的每次往返都将销毁并重新创建网页,因此,如 果超出了单个网页的生存周期,网页中的信息将不复存在。 也就是说,在默认情况下,服务器不会保存客户端再次请 求页面和本次请求之间的关系和相关数据。 ◼ 在C/S架构的应用程序中,使用全局变量即可很好地解决 这个问题,而在ASP.NET环境中则需要使用与状态管理相 关的对象来保存用户数据。 5.1 状态管理概述
52创建和使用 ViewState对象 ViewState对象是 ASP.NET状态管理中常用的一个对象 通常被用来保存web页信息及所含控件的值。 521Ⅴ ViewState对象概述 使用 Viewstate对象可以十分方便地在这一过程中保留当前 页面中所包含的数据。 ■Web页面默认是具有“ form runat= server”特性的, A$PNET会自动在输出时给页面添加一个隐含字段。打开 aspx页面后,在浏览器中右击,在弹出的快捷菜单中 单击“查看源”,即可看到经服务器转换成HM格式后 的页面源代码。如图51所示的是包含在源代码中的 ViewState隐含字段及其值
◼ ViewState对象是ASP.NET状态管理中常用的一个对象,它 通常被用来保存Web页信息及所含控件的值。 ◼ 5.2.1 ViewState对象概述 ◼ 使用ViewState对象可以十分方便地在这一过程中保留当前 页面中所包含的数据。 ◼ Web页面默认是具有“form runat=server”特性的, ASP.NET会自动在输出时给页面添加一个隐含字段。打开 一个aspx页面后,在浏览器中右击,在弹出的快捷菜单中 单击“查看源”,即可看到经服务器转换成HTML格式后 的页面源代码。如图5-1所示的是包含在源代码中的 ViewState隐含字段及其值。 5.2 创建和使用ViewState对象
htp/ localhost:1583/10-3 DataSet应用实例 Default.asp-原始源 上a 文件(F编辑(E格式O) 32 34 35 36 图5-1包含在web页面中的隐含字段 有了这个隐含字段,页面中其他所有的控件状态,包括页 面本身的一些状态都会保存到这个隐含字段的值里面。并 且,每次页面提交时会一起提交到服务器。当服务器将处 理完毕的页面回发给客户端时,ASP.NET会根据这个值来 恢复页面到各个控件提交前的状态
◼ 有了这个隐含字段,页面中其他所有的控件状态,包括页 面本身的一些状态都会保存到这个隐含字段的值里面。并 且,每次页面提交时会一起提交到服务器。当服务器将处 理完毕的页面回发给客户端时,ASP.NET会根据这个值来 恢复页面到各个控件提交前的状态
522使用 ViewState ■1.使用 ViewState对象时的注意事项 使用 ViewState(视图状态)对象可以带来很多方便,但仍 需要注意以下问题。 ①Ⅴ iewState对象仅能提供当前页面对象的状态信息,而且 这些信息不能跨页使用。 ②Ⅴ tesTate对象被序列化为XML的形式,然后再进行 Base64编码 ③若页面中包含有一些用于分页显示数据的控件(如 Gridview),最好不要使用 Viewstate对象。 ④Ⅴ iewState对象的Ma axPageStateFieldLe gth属性用来指定隐 含字段的最大长度
◼ 5.2.2 使用ViewState ◼ 1. 使用ViewState对象时的注意事项 ◼ 使用ViewState(视图状态)对象可以带来很多方便,但仍 需要注意以下问题。 ◼ ① ViewState对象仅能提供当前页面对象的状态信息,而且 这些信息不能跨页使用。 ◼ ② ViewState对象被序列化为XML的形式,然后再进行 Base64编码。 ◼ ③ 若页面中包含有一些用于分页显示数据的控件(如 GridView),最好不要使用ViewState对象。 ◼ ④ ViewState对象的MaxPageStateFieldLength属性用来指定隐 含字段的最大长度
2.启用或禁用Ⅴ ViewState 启用或棼止Ⅴ tesTate保存某控件的信息,可以通过设置控 件的 Enable viewstate属性来实现。该属性值指示服务器控 件是否向发出请求的客户端,保持自己的视图状态以及它 所包含的任何子控件的视图状态。如果允许控件维护自己 的视图状态,则应设置为rue(默认值);否则,应设置 为 I false ■仅当 Enable viewstate属性设置为true时,页面或控件的 ViewStateMode属性才起作用。如果 Enable viewstate属性设 置为 I false,则即使Ⅴ TiewStateMode属性设置为 Enabled,视图 状态也将关闭
◼ 2. 启用或禁用ViewState ◼ 启用或禁止ViewState保存某控件的信息,可以通过设置控 件的EnableViewState属性来实现。该属性值指示服务器控 件是否向发出请求的客户端,保持自己的视图状态以及它 所包含的任何子控件的视图状态。如果允许控件维护自己 的视图状态,则应设置为true(默认值);否则,应设置 为false。 ◼ 仅当EnableViewState属性设置为true时,页面或控件的 ViewStateMode属性才起作用。如果EnableViewState属性设 置为false,则即使ViewStateMode属性设置为Enabled,视图 状态也将关闭
3.使用 ViewState对象 Ⅴ tesTate对象以“键/值对”的方式保存控件的名称和对 应的值,以便在回发时还原控件的原始状态。对于控件的 值保存和回发恢复,可由系统自动完成,一般不必为此编 写专门的代码。若用户希望将一些特殊的数据保存到 Viewstate对象中,则可以使用 Viewstate对象的Ad方法 其语法格式为: ■ ViewState. Add(键名称,值) 从Ⅴ testate中读取值的语法格式为: ViewState[键名称]
◼ 3. 使用ViewState对象 ◼ ViewState对象以“键/值对”的方式保存控件的名称和对 应的值,以便在回发时还原控件的原始状态。对于控件的 值保存和回发恢复,可由系统自动完成,一般不必为此编 写专门的代码。若用户希望将一些特殊的数据保存到 ViewState对象中,则可以使用ViewState对象的Add()方法。 其语法格式为: ◼ ViewState.Add(键名称, 值) ◼ 从ViewState中读取值的语法格式为: ◼ ViewState[键名称]
【演练5-1】本例将示范如何将一个字符串保存到 ViewState中以及从Ⅴ iew State中提取岀来的编程方法。如图 5-2所示,程序启动后,用户可在文本框中随意输入一些字 符后单击“保存到 Viewstate”按钮,将其保存起来。需要 读取时,可单击“从 ViewState中读取”按钮,将Ⅴ iewState 中保存的指定数据显示到标签控件中,如图5-3所示。 删试字行串 已将字符串保存到 ViewState对象! 剩试字符串 测试字符串 存外的小□从e中读 保存外从eS中读取小 图5-2将字符串保存到 ViewState 图5-3从Ⅴ iewState对象中读取数据
◼ 【演练5-1】 本例将示范如何将一个字符串保存到 ViewState中以及从ViewState中提取出来的编程方法。如图 5-2所示,程序启动后,用户可在文本框中随意输入一些字 符后单击“保存到ViewState”按钮,将其保存起来。需要 读取时,可单击“从ViewState中读取”按钮,将ViewState 中保存的指定数据显示到标签控件中,如图5-3所示
新建一个 ASP. NET空网站,向其中添加一个Web窗体 Default. aspx。向页面中添加一个文本框、一个标签和两个 按钮控件。 为Shw,设置两个按钮的D属性分别为 btnsaver列冬 设置文本框的I属性为 tosTring,设置标签控件的I, breAd,设置两个按钮控件的Tex属性分别为“保存到 Viewstate”和“从Ⅴ iewState中读取” 【演练5-1】代码
◼ 新建一个ASP.NET空网站,向其中添加一个Web窗体 Default.aspx。向页面中添加一个文本框、一个标签和两个 按钮控件。 ◼ 设置文本框的ID属性为txtString,设置标签控件的ID属性 为lblShow,设置两个按钮的ID属性分别为btnSave和 btnRead,设置两个按钮控件的Text属性分别为“保存到 ViewState”和“从ViewState中读取”。 ◼ 【演练5-1】代码
53创建和使用 Cookie对象 Cookie是由服务器发送给客户机,并保存在客户机中的 些记录用户数据的文本文件。当用户访问网站时,Web服 务器会发送一小段资料存放在客户机中,它会把用户在网 站上所打开的网页内容、在页面中进行的选择或者操作步 骤逐一记录下来。当用户再次访问同一网站时(可能并不 是相同的网页),Web服务器会首先查找客户机中是否存 在有上次访问网站时留下的 Cookie信息。若有,则会根据 具体 Cookie信息发送特定的网页给用户 在保存用户信息和维护浏览器状态方面,使用 Cookie无疑 是一种很好的方法。例如,可以将用户的登录信息(用户 名、密码、是否登录成功的状态等)存放在 Cookie中,方 便应用程序对用户的合法性进行快速检查
◼ Cookie是由服务器发送给客户机,并保存在客户机中的一 些记录用户数据的文本文件。当用户访问网站时,Web服 务器会发送一小段资料存放在客户机中,它会把用户在网 站上所打开的网页内容、在页面中进行的选择或者操作步 骤逐一记录下来。当用户再次访问同一网站时(可能并不 是相同的网页),Web服务器会首先查找客户机中是否存 在有上次访问网站时留下的Cookie信息。若有,则会根据 具体Cookie信息发送特定的网页给用户。 ◼ 在保存用户信息和维护浏览器状态方面,使用Cookie无疑 是一种很好的方法。例如,可以将用户的登录信息(用户 名、密码、是否登录成功的状态等)存放在Cookie中,方 便应用程序对用户的合法性进行快速检查。 5.3 创建和使用Cookie对象