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的event对象 详解
    RestSharp使用详解(1)调用阿里巴巴开放存储服务
    RestSharp使用详解(2)RestSharp的BUG和不足
    WF实例学习笔记:(2)通过Workflow 调用 WCF Data Services 获取数据
    译文:SQL Azure客户端瞬态错误处理最佳实践
    Windbg 基本命令
    RestSharp使用详解(3)OSS文件上传的问题
    Transient Fault Handling and Retry Logic: 瞬间错误处理——重试
    推荐一本免费的Node.js电子书(台湾)
    CSS导航菜单应用滑动门技术的玻璃效果菜单
  • 原文地址:https://www.cnblogs.com/RChen/p/204525.html
Copyright © 2011-2022 走看看