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;
    }

     

  • 相关阅读:
    js中this应用
    易语言学习
    哈希表和字典List和Ilist和array和arraylist的应用
    ExtJs中decode与encode(转载)
    ajax几种请求几种类型
    关于Json
    简单属性margin和padding
    ==和===的区别
    maven实战读书笔记(三)
    maven实战读书笔记(二)
  • 原文地址:https://www.cnblogs.com/RChen/p/204525.html
Copyright © 2011-2022 走看看