zoukankan      html  css  js  c++  java
  • 组件开发之IPostBackDataHandler和OnLoad

        今天,做了一个UserControl,里面包含两个自定义控件,由于需要自动更新用户回发的数据,所以在OnLoad事件中获取用户数据,可是其中的日期选取控件,使用了两次,却只有一个控件可以取得正确的用户数据! 调试半天不得其法,终于发现自定义控件也是在OnLoad事件中更新自己的值,估计是执行顺序造成的.
        将控件改为实现IPostBackDataHandler接口
    #region IPostBackDataHandler 成员

            
    public bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)
            {
                
    string txt = postCollection[this.UniqueID + ":txtText"];
                
    string val = postCollection[this.UniqueID + ":txtValue"];
                
    if(txt!= Text  || val!=Value )
                {

                    ViewState["Text"= txt;
                    ViewState[
    "Value"= val;
                    
    return true;
                }
                
    return false;
            }
            
    public event EventHandler ValueChanged;
            
            
    public void RaisePostDataChangedEvent()
            {
                
    if (ValueChanged != null)
                    ValueChanged(
    this, EventArgs.Empty);
            }

            
    #endregion
        改造之后终于可以在UserControl中正确取得用户回填的值了!试着在UserControl这一级也使用这种方式取数,有出现了刚才的问题!看来在UserControl级别只能使用OnLoad来实现了.
        问题总算解决了,并且顺便实现了事件触发机制,控件更完善了算是个意外收获.
         总结: 看来服务器端控件必须按照规范实现不同的接口,否则通过不规范的手段实现的功能也很不可靠.
        
  • 相关阅读:
    phpMyAdmin 4.7.x CSRF 漏洞利用
    20155236范晨歌_Web安全基础实践
    20155236范晨歌_Web基础
    20155306 白皎 免考实践总结——0day漏洞
    20155306 白皎 0day漏洞——漏洞的复现
    20155306 白皎 0day漏洞——漏洞利用原理之GS
    20155306 白皎 0day漏洞——漏洞利用原理之DEP
    20155306 白皎 0day漏洞——漏洞利用原理之栈溢出利用
    20155306 白皎 0day漏洞——基础知识
    20155306白皎 《网络对抗》 Exp9 Web安全基础实践
  • 原文地址:https://www.cnblogs.com/dajianshi/p/367660.html
Copyright © 2011-2022 走看看