注册asp:按钮单击事件处理程序

时间:2010-11-29 20:48:39

标签: c# javascript jquery asp.net-ajax mouseclick-event

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

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

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

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

谢谢!

2 个答案:

答案 0 :(得分:2)

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

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

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

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 :(得分:0)

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