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.必须以添加它们的相同顺序检索
    四 控件状态的细节远不只是这些,有不妥当的地方,还望同仁指出...(后续)
  • 相关阅读:
    SDOI2008Cave 洞穴勘测
    使用Nginx反向代理和内容替换模块实现网页内容动态替换功能
    使用Nginx反向代理和内容替换模块实现网页内容动态替换功能
    Js 变量声明提升和函数声明提升
    Js 变量声明提升和函数声明提升
    Golang-filepath使用
    Golang-filepath使用
    44、File类简介
    44、File类简介
    div/dom元素拖拽缩放插件,纯js实现拖拽缩放,不依赖jQuery~
  • 原文地址:https://www.cnblogs.com/waw/p/2156956.html
Copyright © 2011-2022 走看看