[ASP.NET]在Page_Load取得觸發PostBack的元件

  • 7776
  • 0

摘要:[ASP.NET]在Page_Load取得觸發PostBack的元件

ASP.NET真是博大精深,最近遇到一個UserControl的小問題,

逼得我不得不在Page_Load就取到觸發事件的元件,

其實很簡單,只要取Request.Params["__EVENTTARGET"]就好。

ASP.NET在PostBack時,會把觸發事件的該元件ClientID塞到__EVENTTARGET參數裡,

所以我們就可以在後端透過Request.Params["__EVENTTARGET"],知道是哪個元件觸發事件,

範例程式如下:


        protected void Page_Load(object sender, EventArgs e)
        {
            if (this.IsPostBack)
            {
                var ctlName = this.Request.Params["__EVENTTARGET"];

                Response.Write(ctlName);
            }
        }

有一點要注意的是,Button元件要加上UseSubmitBehavior="false"屬性,才能取的到資料,像:

<asp:Button ID="Button1" runat="server" Text="Button" UseSubmitBehavior="false"/>

 

以上,終於解決我的問題,小小心得是,UserControl最好是在Page_Load就新增好,

最好不要在Click Event事件裡再去動態新增或刪除。