[转]Page.RegisterRequiresRaiseEvent()与Page.RegisterRequiresPostBack()

Page.RegisterRequiresRaiseEvent()与Page.RegisterRequiresPostBack()方法

Page.RegisterRequiresRaiseEvent()与Page.RegisterRequiresPostBack()方法是两个与回传有关的另外两个方法,微软对这两个方法的解释:
Page.RegisterRequiresRaiseEvent()

:将 ASP.NET 服务器控件注册为需要在 Page 上处理控件时引发事件的控件。
Page.RegisterRequiresPostBack() :将控件注册为需要回发处理的控件。
 
Page.RegisterRequiresRaiseEvent()
    方法用于将一个服务器控件标识为在回发处理该控件时该控件要引发回事件,而不管产生回传的客户端控件到底是那一个客户端控件。说白了就是每当页面回发的时 候都去引发某个服务器控件的某个事件(即自动调用IPostBackEventHandler的RaisePostBackEvent()方法),而不管 是谁引起的回发(就像是.net中的数据验证控件)。在一些特殊的情况下,这可能正是我们想要的结果。用例子说明是最好的方法,下我就将用描述性的语句来 举例说明:
假设:当前网页就是3个控件名称分别为Button1,Button2,Button3,其中Button3实现了Page.RegisterRequiresRaiseEvent()。而且这三个控件都会产生各自的事件回调Button*_Click事件。
执行流程:此 时我们如果点击Button1触发Button1_Click事件,那么将执行的事件有Button1_Clcik ,Button3_Click。如果点击Button2触发Button2_Click事件,那么将执行的事件有Button2_Clcik ,Button3_Click。如果点击Button3触发Button3_Click事件,那么将执行的事件只有Button3_Clcik。现在就很 清楚了吧。
 
Page.RegisterRequiresPostBack()
    用于标识一个控件在页面回发时,该控件需要被处理。这个处理其实就是无条件的“加载视图状态和回发数据”。我们知道一个服务器控件的 LoadPostData()方法是否会被执行通常取决于回发表单中是否拥有与该服务器控件名称相同的表单控件名称,如果没有,控件的 LoadPostData()方法是不会被执行的。Page.RegisterRequiresPostBack()方法则强制页面去调用一个服务器控件 的LoadPostData()方法。
举例说明:
假设:一个网页中同时有两个表单(Form1,From2).Form1中有个Button1控件,Form2中有个Button2控件,其中Button2.实现了Page.RegisterRequiresPostBack()方法。
执行流程:些时点击Button1产生事件回调,执行的事件有:Button1_Click Button2_Click。如果点击Button2,则执行的事件只有 Button2_Click,Button1_Click不会被执行。
原文地址:https://www.cnblogs.com/lxiang/p/2554588.html