9

我有 2 个按钮控件。当我单击一个时,我试图确定哪一个导致页面加载中的回发。如何确定这个?

4

5 回答 5

3

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

<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"/>
于 2012-04-19T14:21:19.563 回答
2

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

考虑另一种方法:

与其在 Form_Load 中检测回发,然后找出触发它的原因,不如为每个按钮创建一个特定的事件处理程序。这就是 Web 表单的全部意义所在——因此您可以使用与开发 Windows 应用程序非常相似的方式来开发应用程序。

于 2012-04-19T14:22:51.380 回答
1

真正输入类型按钮在发布请求中发送其值。例如,如果您有,您将进入 Post button-name=Quote ,就像它是简单的文本输入一样。因此,您可以使用如下代码检查 post 是否包含按钮的值(对不起我的 vb):

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

因此,如果它不是Nothing (null),则帖子已通过 SubmitQuote 按钮发送。

顺便说一句,对我来说 HttpContext.Current.Request("__EVENTTARGET") 也不起作用。

于 2014-04-07T16:31:25.597 回答
1

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

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

  • 按钮(在表单的根部)
  • 图像按钮(嵌套在 Datagrid 中)

我确定以下按钮控件是否引发了回发,方法是查看UniqueID控件的 是否已传递给Page_Load子内的表单请求:

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

为了简单地处理以下嵌套图像按钮是否发起了回发,我利用了调用 javascript 函数的属性,该函数将使用发起控件OnClientClick的值填充补充隐藏字段控件的值,然后查看隐藏控件值UniqueID同样在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将通过某种方式实现:

-VB.NET
     Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Load
        ' ...
        If Not Page.IsPostBack Then
            If Not String.IsNullOrEmpty(Me.Page.Request.Form(Button1.UniqueID)) Then
                ' ...
            ElseIf Not String.IsNullOrEmpty(Me.Page.Request.Form(Button2.UniqueID)) Then
                ' ...
            ElseIf Not Me.Page.Request.Form(HiddenField1.UniqueID) Is Nothing _
                And Not String.IsNullOrEmpty(Me.Page.Request.Form(HiddenField1.UniqueID)) Then
                ' ...
                HiddenField1.Value = String.Empty
            Else
                ' ...
            End If
        End If
    End Sub
于 2015-02-22T16:29:53.287 回答
0

在页面加载检查这个

String ButtonID = Request["__EVENTTARGET"];
于 2012-04-19T14:24:41.980 回答