快速业务通道

庖丁解牛Asp.net3.5控件和组件开发技术系列—页面状态机制(四)

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
onalFields.ControlsViewState.Remove (control.ID);
         }
         else
         {
           savedState = this._occasionalFields.ControlsViewState[index];
           this._occasionalFields.ControlsViewState.Remove(index);
         }
       }
       control.LoadViewStateRecursive(savedState);
       if (this._controlState >= ControlState.Loaded)
       {
         control.LoadRecursive();
         if (this._controlState >= ControlState.PreRendered)
         {
           control.PreRenderRecursiveInternal();
         }
       }
     }
   }
}

这是.NET类库代码,不必全部看懂。但要知道此方法能够启用视图状态和向页面请求注册控件状态(假如需要的话)。

视图状态跟踪被启用后,接下来执行对item"子项1"的增加当然也能够被页框架视图管理器保存。

6.8 自定义类型转换器实现高效率序列化

由于ViewState数据是作为序列化格式串存储的,在视图装载和保存阶段,需要进行正反序列化。这对于复杂对象是比较耗资源的,还好系统已经对一些如 ArrayList和哈希表集合等类型对象进行了优化;但对于我们自定义的类对象,在默认情况下使用.NetFramework提供的二进制序列化功能来序列化对象,比较耗资源,解决的办法是为自定义类提供专门的类型转换器(TypeConverter),实现字符串到对象的相互转换,这种方法比默认.Net提供的二进制序列化要节省资源。

类型转换器在第4章的4.6.2节已经讲解过了,这里不再多说,如果还不明白请回顾一下前面章节。之前定义的类型转换器主要用于设计器中的设计与代码视图切换。这里我们把类型转换器应用于视图状态。下面就来看一个例子,示例控件名称为 ViewStateTypeConverter,示例中仍然使用在第4章我们自定义的三维坐标类SolidCoordinate和该类的自定义类型转换器 SolidCoordinateConverter。这两个类代码比较简单,先回顾一下这两个类的代码。SolidCoordinate代码如下:

/// <summary>
/// 获得本书更多内容,请看:
/// http://blog.csdn.net/ChengKing/archive/2008/08/18/2792440.aspx
/// </summary>
[TypeConverter(typeof(SolidCoordinateConverter))]
public class SolidCoordinate
{
   private int x;
   private int y;
   private int z;

   public SolidCoordinate()
   {
   }

   public SolidCoordinate(int x, int y, int z)
   {
     this.x = x;
     this.y = y;
     this.z = z;
   }

   [NotifyParentProperty(true)]
   public int x
   {
     get
     {
       return this.x;
     }
     set
     {
       this.x = value;
     }
   }

   [NotifyParentProperty(true)]
   public int Y
   {
     get
     {
       return this.y;
     }
     set
     {
       this.y = value;
     }
   }

   [NotifyParentProperty(true)]
   public int Z
   {
     get
     {
       return this.z;
     }
     set
     {
       this.z = value;
     }
   }
}
SolidCoordinateConverter类的代码如下:
/// <summary>
/// SolidCoordinate类的自定义类型转换器
/// </summary>
public class SolidCoordinate

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号