摘要:[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事件裡再去動態新增或刪除。