Button与页面回递

    事情起因:
    今天,在做项目的时候,页面中用了两个updatePanel,来实现页面的异步更新。用一个updatePanel中的Button来控制另一个updatePanel中内容的更新,奇怪的是其显示的内容还是原来的内容。为简单起见,我用一个简单的例子来描述我项目中出现的问题。
    首先页面代码:
< body >
    
< form id = " form1 "  runat = " server " >
    
< asp:ScriptManager ID = " ScriptManager1 "  runat = " server " >
    
</ asp:ScriptManager >
    
< div >
        
< asp:UpdatePanel ID = " UpdatePanel1 "  runat = " server " >
            
< ContentTemplate >
                
< asp:Button ID = " Button1 "  runat = " server "  Text = " Button "  onclick = " Button1_Click "   />
                
< asp:Label ID = " Label1 "  runat = " server "  Text = " BeforeSubmit " ></ asp:Label >
            
</ ContentTemplate >
        
</ asp:UpdatePanel >
        
< asp:UpdatePanel ID = " UpdatePanel2 "  runat = " server "  UpdateMode = " Always " >
            
< ContentTemplate >
                
< asp:TextBox ID = " TextBox2 "  runat = " server " >
                
</ asp:TextBox >
                
< asp:Button ID = " Button2 "  runat = " server "  Text = " Button "   /></ ContentTemplate >
        
</ asp:UpdatePanel >
    
</ div >
    
</ form >
</ body >
在页面中我定义了两个updatePanel,用updatePanel中的Button1来控制updatePanel2种的TextBox2的取值。后台代码如下:
  public   partial   class  _Default : System.Web.UI.Page
    
{
        
protected void Page_Load(object sender, EventArgs e)
        
{
            TextBox2.Text 
= Label1.Text;
        }


        
protected void Button1_Click(object sender, EventArgs e)
        
{
            Label1.Text 
= "AfterSubmit";
        }


    }

在Page_Load()方法中修改TextBox2中的值,但执行结果:

 TextBox2中的值并没有像想象中的发生变化还是“Beforesubmit",但是再回递页面的话,TextBox2中的值就变成了“AfterSubmit”。
这是为什么呢?通过设置断点,发现,当Button回递页面的时候,先执行的是Page_Load()方法,然后再执行OnClick事件中的Button1_Click(object sender, EventArgs e)方法。这就是问题的根结。
说来真是惭愧,用了这么多button的OnClick事件,竟然不知道事件触发时,系统到底做了哪些工作,导致了这个错误。哎,看来以后学习还是得多上点心啊。

你可能感兴趣的:(button)