注册 asp:button 点击​​事件处理程序

Posted

技术标签:

【中文标题】注册 asp:button 点击​​事件处理程序【英文标题】:Registering asp:button click event handler 【发布时间】:2011-05-17 12:22:58 【问题描述】:

我有多个用 jQuery 动态创建的 asp:button。

对于他们每个人,我都有 OnClick="ibtn_Click"

但是在后面的代码中,我必须在 Page_Load..like.. button.Click += new EventHandler(this.ibtn_Click); 上手动注册它们中的每一个。

有没有办法自动注册这个处理程序?或者可以用ajax jquery注册吗?

谢谢!

【问题讨论】:

你是什么意思你用jQuery创建了asp:buttons?请张贴代码。 类似这样的东西: $('') .attr("id", nameTempTop) .appendTo('div[id='+namePrevTop+']' ); @Jeff:是的。我不得不再次阅读以查看我是否正确阅读。 ;) @Jeff 和 @conqenator 有解决办法吗? 好的,那么问题是“如何在服务器上动态添加按钮并处理它们的点击事件”? 【参考方案1】:

您不能在客户端浏览器中添加 ASP.NET Web 控件。 ASP.NET 将那些 <asp:button> 标记转换为常规 html,如下所示:

<input type="submit" name="Button1" value="Ok" id="Button1" />

当用户单击其中一个提交控件时,浏览器会发送一个 POST 请求,其中包括按钮的 name 作为发布数据的一部分(您可以通过 ASP.NET 中的 Form 集合访问):

if (this.IsPostBack && Request.Form["Button1"] != null) 
    // do something if the user clicked Button1

ASP.NET 自动将服务器控件单击绑定到OnClick 属性中指定的方法。它在Page.Load 完成后调用该方法(有关血腥细节,请参阅“ASP.NET Page Life Cycle Overview”)。

如果您要在客户端上添加按钮,您可以自己完成所有这些操作。例如,您可以在Page_PreRender 中“绑定”动态生成的按钮:

protected void Page_PreRender(object sender, EventArgs e) 
    if (this.IsPostBack && Request.Form["Button1"] != null) 
        // Call another method on the page
    

最后,在这个时代,如果合适的话,你绝对应该考虑只通过 jQuery 的ajax 调用页面方法。有关该技术的介绍,请参阅 this excellent Encosia article。

【讨论】:

+1 用于通过 jQuery 的 ajax 调用页面方法。离 ASP.NET 的 webform 抽象和丑陋的回发越远 - 越好!【参考方案2】:

你的目的是生成动态的asp.net按钮来调用后面的代码吗? 您可以生成 html“提交”按钮 (type=submit) 并从 javascript 调用 webMethods。 webmethods 比重定向到你后面的 c# 代码

【讨论】:

以上是关于注册 asp:button 点击​​事件处理程序的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JavaScript 调用 asp:Button OnClick 事件? [复制]

HTML 学习笔记 JavaScript(事件)

jquery获取服务器asp:button事件获取不了

Javascript - DOM事件

android的事件处理机制有两种

java之十二 事 件 处 理