代码之家  ›  专栏  ›  技术社区  ›  Tola Odejayi

asp.net页如何知道哪个按钮触发了回发?

  •  5
  • Tola Odejayi  · 技术社区  · 15 年前

    问题是web请求的响应与我单击按钮时得到的响应不同。

    在调查中,我发现即使在我执行web请求时触发并处理了页面加载事件,按钮点击的处理程序也没有被执行(这意味着要么事件没有被触发,要么它正在被触发但没有被处理——我猜更可能是前一种情况)。

    所以我的问题是- ASP.NET如何知道单击了哪个按钮以便可以调用相应的处理程序?

    我查看了已解码的VIEWSTATE参数,但没有看到任何明显的内容。

    有人能提供进一步的帮助吗?

    编辑: 询问如何向web应用程序添加单击处理程序。

    已经

    7 回复  |  直到 15 年前
        1
  •  6
  •   Preets    14 年前

    首先,一个ASP.NET按钮 <asp:button> <input type="submit" runat="server"...> 表单上的元素。对于回发,此按钮的行为与其他控件不同。

    单击时 <input type="submit"...> 将自动触发回发 没有ASP.NET的帮助

    那么,EVENTTARGET有什么用呢?

    其他控件,如 <asp:DropDownList> SELECT SelectedIndexChanged 事件,ASP.NET将不得不为您做一些额外的工作。如果为DropDownList设置AutoPostBack=True,ASP.NET将捕获原始的onChange JS事件并连接一个自定义的doPostBack JS函数,该函数负责填充\uu EVENTTARGET和 提交表格。现在可以通过检查\uEventTarget来确定触发回发的控件。

    希望这有点帮助!

        2
  •  2
  •   wozza    15 年前

    在页面中添加一行\u load:Request.SaveAs(@“c:\temp\Request.txt”,true)(例如)。

    然后单击按钮执行回发。

        3
  •  0
  •   Chase Florell    15 年前

    在代码隐藏中,必须有一个要处理的事件,并且该事件必须 Handles ButtonName.Click

    即:

    Protected Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
        ''# Process everything you want to process when Button2 gets clicked
    End Sub
    

    或者,在您的按钮中,您可以 OnClick 在标记中设置。

    <asp:button ID="Button2" runat="server" OnClick="Button2_Click" Text="Click Me" />
    

    runat="server" .NET将为您完成所有繁重的工作。

        4
  •  0
  •   Cylon Cat    15 年前

    有许多简单的方法可以为按钮创建事件处理程序。在布局模式下,双击按钮。或者,在布局模式下,选择按钮,打开属性窗口,单击“闪电”图标,然后查看控件可以触发的事件列表。双击所需的事件。

        5
  •  0
  •   Chris Mullins    15 年前

    __事件目标 EnableEventValidation=“假”

    HTML页:

    <html xmlns="http://www.w3.org/1999/xhtml">
    <body>
        <form action="Default.aspx" method="post">
        <input value="cmdSubmit" name="__EVENTTARGET" type="hidden" />
        <input type="submit" value="submit" />
        </form>
    </body>
    </html>
    

    <%@ Page Language="C#"  EnableEventValidation="false"    %>
    <script runat="server">
    
        protected void cmdSubmit_Click(object sender, EventArgs e)
        {
            litResult.Text = "Submit button clicked";
        }
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <body>
        <form id="form1" runat="server">
        <asp:Literal ID="litResult" runat="server" EnableViewState="false"></asp:Literal>
        <asp:Button UseSubmitBehavior="false" ID="cmdSubmit" EnableViewState="false" runat="server"
            OnClick="cmdSubmit_Click" Text="Submit" />
        </form>
    </body>
    </html>
    
        6
  •  0
  •   Tola Odejayi    15 年前

    好吧,所以我最后想明白了。

    请求应该包含一个名称-值对,其中名称是单击按钮的id,值可以是“1”。

    然而,将这个名称-值对添加到我创建的web请求中会导致触发button click事件处理程序代码。

        7
  •  0
  •   mclark1129    15 年前

    肖科,

    ASP.net回发可能很棘手,但您应该看看本文中使用的\uu doPostBack()javascript函数,以了解一些细节。

    http://www.dotnetspider.com/resources/1521-How-call-Postback-from-Javascript.aspx

    嗯,

    迈克

    推荐文章