ASP.NET控件开发基础(11)
31 } 32} 下面再看如何在Custom类中自定义属性状态管理,当你定义了复杂类型时,你就需要重写上面的几个方法. 具体代码如下: 首先我们对属性进行视图状态的跟踪,然后重写了Control类的三个方法.其一方面调用了基类方法,一方面调用了Addres类的显示接口方法. Pair类为一个辅助类,用作存储两个相关对象的基本结构,下面根据调试结果来理解.在Custom类中对其三个方法设置断点.
自定义视图状态#region 自定义视图状态
设置断点以后,启动起始页开始测试. 启动后第一步将会跳到Custom类的TrackViewState方法里面,执行完此方法后IsTrackingViewState将设置为true, 从而可以继续调用address的TrackViewState方法,另外可以看到address属性为空值,然后按F5,通过此方法继续 第二步将会跳到Custom类的SaveViewState方法里,发现baseState和thisState均为空,直接执行基类方法.按F5继续 第三步将会跳到Address类的TrackViewState方法里,_isTrackingViewState初始化时为false,执行此方法后将赋值为ture,然后调用_viewState的TrackViewState方法. 初始化的工作就完成了,然后我们点击确定按钮,重新执行. 重新跳到Custom类的TrackViewState方法里,步骤跟上面第一步一样,按F5,继续 跳到Address类的TrackViewState方法里,步骤跟上面第二步一样,按F5继续 跳到Custom类的SaveViewState方法里,此时address不再为null,此时会返回Pair构造函数. 然后会跳到Address类SaveViewState方法里,接着会跳回来,再执行Custom类的SaveViewState方法 以上调试方法不一定正确,但多调用会理解的更深刻. 我们还发现并未跳到LoadViewState方法里,以前的主要工作就是保存视图状态更改,接下来再次调试的话,就会跳到LoadViewState方法方法里面,这时你会发现savedState就是SaveViewState方法中保存下来的视图状态,可以 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |