本系列的第三章我们了解了ViewState的基础知识,也大概的了解了Aspx页面的生命周期,今天继续讲解ViewState的Asp.net服务器控件中的使用和复杂的ViewState管理。
        ViewState的简单使用我们只要举个简单的例子即可:

Asp.net服务器控件编程(6) ViewState(二)——ViewState用法和IStateManagerusing System;
Asp.net服务器控件编程(6) ViewState(二)——ViewState用法和IStateManager
using System.Collections.Generic;
Asp.net服务器控件编程(6) ViewState(二)——ViewState用法和IStateManager
using System.Text;
Asp.net服务器控件编程(6) ViewState(二)——ViewState用法和IStateManager
using System.Web.UI.WebControls;
Asp.net服务器控件编程(6) ViewState(二)——ViewState用法和IStateManager
Asp.net服务器控件编程(6) ViewState(二)——ViewState用法和IStateManager
namespace ClassLibrary1

        效果如下:
        Asp.net服务器控件编程(6) ViewState(二)——ViewState用法和IStateManagerAsp.net服务器控件编程(6) ViewState(二)——ViewState用法和IStateManager
        一个Aspx页面在提交和返回的过程会执行LoadViewState和SaveViewState两方法,这就是控件的状态并行化和串行化的过程,而这个过程是通过LosFormatter对象来完成的。Los 格式化程序用于高度压缩 ASCII 格式的序列化,它实现了整数、bool、字符串的串行,同时Array、ArrayList和HashTable的对象图进行了优化,控件保存在ViewState中的任何对象都必须由LosFormatter来串行化。
        ViewState属性的类型是StateBag类,改类是个字典,它通过实现ISateManager接口参与状态管理。StateBag保存键/值对,其中键是字符串而值是对象,当某个对象添加到StateBag实例中时,StateBag自动为改对象添加一个附加位,它来存储对象是否被更改过。Control的状态管理默认都是由ViewState来完成,但是,当控件定义了复杂属性时,想用ViewState来自动管理这些属性就不可能了,所以我们复杂属性的自定义类型可以通过IStateManager接口来参与状态管理。IStateManager的原形如下:
bool IsTrackingViewState { get; }
         void LoadViewState(object state);
         object SaveViewState();
        void TrackViewState();
        在.net中Control类没有从IStateManager继承下来,但是Control却实现IStateManager的原形,这里的实现就不在举例来说明,如果需要的话,可以参考《ASP.NET服务器控件与组件开发》的183页。

相关文章:

  • 2022-12-23
  • 2021-10-20
  • 2022-12-23
  • 2021-05-30
  • 2022-03-10
  • 2022-02-08
猜你喜欢
  • 2022-01-07
  • 2021-11-20
  • 2022-01-02
  • 2022-01-21
  • 2022-12-23
相关资源
相似解决方案