注册 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 点击事件处理程序的主要内容,如果未能解决你的问题,请参考以下文章