将ServerClick事件添加到ASP.NET <button>元素</button>

时间:2011-02-15 03:40:26

标签: asp.net events event-handling onclick

我希望在后端处理HTML <button>(不是<input type="button">)的点击事件。我想要处理按钮的原因是因为我所拥有的设计具有按钮控制的所有地方,因此修改所有CSS将是更多的工作。

对于我的按钮,我有:

   <button type="submit" id="submit" runat="server">Send</button>

在我的代码背后,我有:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            submit.ServerClick += new EventHandler(submit_click);
        }
    }

    protected void submit_click(object sender, EventArgs e)
    {
        // never being hit
    }

这可能吗?

2 个答案:

答案 0 :(得分:3)

您应该删除if (Page.IsPostBack)的条件检查。您的代码目前无法正常工作,因为只有在首次呈现页面时才会设置onclick处理程序。然后,当用户点击按钮时会发生回发,但现在您的页面代码不再具有与按钮关联的处理程序,因此没有代码可以执行。就这样做:

protected void Page_Load(object sender, EventArgs e)
{
    submit.ServerClick += new EventHandler(submit_click);
}

protected void submit_click(object sender, EventArgs e)
{
    // now it should get hit
}

答案 1 :(得分:3)

另一种方法是将其添加到按钮元素:

<button type="submit" id="submit" runat="server" onserverclick="Button1_OnClick">Send</button>

void Button1_OnClick(object Source, EventArgs e) 
  {
     // Do Something here
  }

http://msdn.microsoft.com/en-us/library/a8fd2268%28v=VS.100%29.aspx