zoukankan      html  css  js  c++  java
  • 实现 IStateManager 接口的服务器控件在设定属性时的注意点

    设定属性后,要添加一句
    ViewState.SetItemDirty() 的调用,这样在后续的阶段,StateBag.SaveViewState() 方法被调用时,才会保存该属性的值。
    例子如下:

            public virtual ImageAlign RightImageAlign
            
    {
                
    get
                
    {
                    
    object o = ViewState["ItemRightImageAlign"];
                    
    if (o == null)
                        
    return ImageAlign.NotSet;
                    
    else
                        
    return (ImageAlign) o;
                }

                
    set
                
    {
                    ViewState[
    "ItemRightImageAlign"= value;
                    ViewState.SetItemDirty(
    "ItemRightImageAlign"true);
                }

            }

    通过 Reflector 看到 System.Web.UI.StateBag 类的
    SaveViewState() 方法的代码如下,可以验证这一点:

    internal object SaveViewState()
    {
          ArrayList list1 
    = null;
          ArrayList list2 
    = null;
          
    if (this.bag.Count != 0)
          
    {
                IDictionaryEnumerator enumerator1 
    = this.bag.GetEnumerator();
                
    while (enumerator1.MoveNext())
                
    {
                      StateItem item1 
    = (StateItem) enumerator1.Value;
                      
    if (item1.IsDirty)
                      
    {
                            
    if (list1 == null)
                            
    {
                                  list1 
    = new ArrayList(5);
                                  list2 
    = new ArrayList(5);
                            }

                            list1.Add(enumerator1.Key);
                            list2.Add(item1.Value);
                      }

                }

                
    if (list1 != null)
                
    {
                      
    return new Pair(list1, list2);
                }

          }

          
    return null;
    }

     

  • 相关阅读:
    【爬虫】微信读书笔记如何导出到本地?
    工作面试题——值得一看
    算法实验三——图的遍历算法
    数据结构之排序算法
    汇编语言学习总结
    洛谷—— P2658 汽车拉力比赛
    洛谷—— P1419 寻找段落
    CODEVS——T 1700 施工方案第二季
    洛谷—— P3811 【模板】乘法逆元
    JAVA中传递的值还是引用的问题
  • 原文地址:https://www.cnblogs.com/RChen/p/204525.html
Copyright © 2011-2022 走看看