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

     

  • 相关阅读:
    elasticSearch数据库、skywalking集群部署
    spring boot admin 源码包的编译
    spring cloud config 配置文件更新
    网关拦截:使用用户登录
    Spring Boot Admin 2.1.4最新实战教程
    Spring Boot 整合 Apollo
    spring-boot admin的使用
    第三模块 :微服务网关Zuul架构和实践
    如何实现内核模块与内核版本的解耦
    记录一次内核热补丁制作流程
  • 原文地址:https://www.cnblogs.com/RChen/p/204525.html
Copyright © 2011-2022 走看看