如何确定哪个按钮导致回发

时间:2012-04-19 14:14:13

标签: asp.net .net vb.net postback

我有2个按钮控件。当我点击一个我试图确定哪一个导致页面加载回发。该如何确定?

5 个答案:

答案 0 :(得分:3)

使用CommandName和CommandArgument如何在this example中显示。这样你就可以只有一个处理程序。

<asp:Button id="Button1"
       Text="Sort Ascending"
       CommandName="Sort"
       CommandArgument="Ascending"
       OnCommand="CommandBtn_Click" 
       runat="server"/>

  <asp:Button id="Button2"
       Text="Sort Descending"
       CommandName="Sort"
       CommandArgument="Descending"
       OnCommand="CommandBtn_Click" 
       runat="server"/>

答案 1 :(得分:2)

您来自经典ASP背景吗?当我第一次使用ASP.NET时,我遇到了同样的问题。

考虑另一种方法:

不是在Form_Load中检测回发,而是找出触发它的内容,而是为每个按钮创建一个特定的事件处理程序。这是Web窗体的重点 - 因此您可以使用与Windows应用程序非常相似的方式开发应用程序。

答案 2 :(得分:1)

使用type按钮真正输入会在post请求中发送其值。例如,如果您已经进入Post按钮名称= Quote,就像它的简单文本输入一样。因此,您可以使用以下代码(对不起我的vb)检查帖子是否包含按钮的值:

Dim isQuote As Boolean = HttpContext.Current.Request.Form(SubmitQuote.UniqueID) IsNot Nothing

所以,如果它不是 Nothing (null),那么就会通过SubmitQuote按钮发送帖子。

BTW对我来说HttpContext.Current.Request(&#34; __ EVENTTARGET&#34;)也没有用。

答案 3 :(得分:1)

在我的实现中,我的页面上有几个表单;如果某些按钮控件触发了回发操作,则需要进一步操作。

控件属于以下类型,不会填充Request["__EVENTTARGET"]

        
  • 按钮(位于表单的根目录)
  •     
  • 图像按钮(嵌套在数据网格中)

我通过检查控件的UniqueID是否已传递到Page_Load sub中的表单请求来确定以下按钮控件是否启动了回发:

- ASP.NET:
    <asp:Button ID="Button1" runat="server" />
    <asp:Button ID="Button2" runat="server" />

为了简单地处理以下嵌套图像按钮是否发起了回发,我利用调用javascript函数的OnClientClick属性,该函数将使用{{1来填充补充隐藏字段控件的值启动控件,然后在UniqueID sub:

中类似地查看隐藏的控件值
Page_Lode

- ASP.NET: <script type="text/javascript"> function SetSource(SourceID) { var hiddenField = document.getElementById("<%=HiddenField1.ClientID%>"); hiddenField.value = SourceID; } </script> <asp:HiddenField ID="HiddenField1" runat="server" Value="" /> <asp:ImageButton ID="ImageButton1" runat="server" OnClientClick="SetSource(this.id)" /> 然后通过某种方式实现:

Page_Load

答案 4 :(得分:0)

页面加载

检查此

String ButtonID = Request["__EVENTTARGET"];