庖丁解牛Asp.net3.5控件和组件开发技术系列—页面状态机制(四)
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代码如下:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |