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.必须以添加它们的相同顺序检索
    四 控件状态的细节远不只是这些,有不妥当的地方,还望同仁指出...(后续)
  • 相关阅读:
    Criteria和Detachedcriteria的区别及应用(转)
    Hibernate中DetachedCriteria的使用(转)
    jQuery的dom操作
    MyEclipse6.5安装SVN插件的三种方法(转)
    hibernate反向生成实体类
    PHP写文本日志
    关于微软ADO.NET提供的组件库里的UpdateDataSet()的用法心得
    比较文件内容是否一致
    在ListView的顶部和底部加入其他View
    Android中使用shape来定义控件的显示属性
  • 原文地址:https://www.cnblogs.com/waw/p/2156956.html
Copyright © 2011-2022 走看看