zoukankan      html  css  js  c++  java
  • 艾伟:控件之ViewState 狼人:

    主题,控件的viewstate状态

    一“七七八八”

    有次,朋友开玩笑说,不知道什么时候,微软会取消viewstate,不再使用隐藏字段在服务器与客户端保存状态!虽然,可以使用客户端技术减少一些回传,但是,一些必要的服务器状态还是要保存的,现在网络带宽已经不是问题,所以在网络上适当的传递一些状态数据,还是可以容忍的!当然,如果终端是mobile,可以考虑把viewstate保存到服务器上!

    二“误解viewstate”

        园子里,有不少描写viewstate的文字,也看了不少,知道Viewstate实现了IStateManager接口的一个属性和三个方法!刚接触“她”的时候,一直以为control对象直接实现了IStateManager接口,模糊的记得好象有几个LoadViewstate和SaveViewstate方法,也没有在意方法有没有override修饰!后来发现不是这样的,control并没有直接实现IStateManager接口,而是通过定义一个StateBar类型的Viewstate属性,委托Viewstate属性去管理状态,也就是让StateBar类型去真正实现状态的管理,这种方式可以使控件本身和viewState的实现完全分离!也许,这些经验,对高手谈不上是“经验”,希望刚入门的同仁能少走点弯路!

    三“结合Style样式,浅谈Viewstate”

    Viewstate属性能装载的数据类型比较有限,但是有些不能加载的类型怎么办呢?当然是重写
    IStateManager了,然后WebControl委托给ControlStyle属性来管理状态,有点象WebControl
    定义ViewState属性

    还是从简单的入手吧,直接使用Style类型的状态管理
    目标,定义一个文本框和一个按钮的复合控件
    要点,分别给文本框和按钮各自定义样式,并提升她们为顶级样式属性
    图一

    图二 (文本框和按钮的样式)

    图四 Demo
    Code
    Demo比较简单,在类顶部定义了两个Style类型的属性,然后重写维护状态的三个方法一个属性
    注意
    1.这里并不是直接重写IStateManager接口
    2.重写 SaveViewState 方法以将附加样式属性保存到
    ViewState
    3.重写 LoadViewState 方法以自定义从 ViewState 的附加样式属性的还原
    4.必须以添加它们的相同顺序检索
    四 控件状态的细节远不只是这些,有不妥当的地方,还望同仁指出...(后续)
  • 相关阅读:
    Atitit。D&D drag&drop拖拽功能c#.net java swing的对比与实现总结
    Atitit.js javascript异常处理机制与java异常的转换 多重catc hDWR 环境 .js exception process Vob7
    Atitit.web 视频播放器classid clsid 大总结quicktime,vlc 1. Classid的用处。用来指定播放器 1 2. 标签用于包含对象,比如图像、音
    ListView与Adapter的那些事儿
    (转)Android反面自动静音
    (转)socket 与 file_get_contents的区别和优势的简单介绍
    Android ArrayAdapter 详解
    ImageView相关
    Android dip,px,pt,sp 的区别
    (转)Android 程序获取、设置铃声、音量、静音、扬声器
  • 原文地址:https://www.cnblogs.com/waw/p/2156956.html
Copyright © 2011-2022 走看看