eventhandler和postback(.net)

时间:2011-10-07 11:08:59

标签: .net event-handling postback

我有一个带按钮的简单asp.net-Page。

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" MasterPageFile="~/MasterPage.master"%>

<asp:Content runat="server" ID="content" ContentPlaceHolderID="ContentPlaceHolder1">

<asp:Button runat="server" ID="btn1" Text="Click me" />

</asp:Content>

代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        btn1.Click += new EventHandler(Btn1_Click);
    }
}

protected void Btn1_Click(Object sender, EventArgs e)
{
    //do stuff
}

单击按钮时不会引发Click事件,但是如果我将事件放在按钮的标记中,或者如果我将EventHandler与回发绑定,则是这样。为什么?我还是得不到它。该事件是否应该独立于其来源而提出?

1 个答案:

答案 0 :(得分:3)

我不是100%确定这是你要问的,但是:如果你没有在每次加载页面时都连接事件处理程序,它就不会运行。如果您认为AutoEventWireUp应该这样做,那就不是它的用途。为了澄清,AutoEventWireup的说明

  

'仅对页面事件执行自动绑定,而不对事件执行自动绑定   对于页面上的控件。“

它需要在控件本身声明:

<asp:Button runat="server" ID="btn1" Text="Click me" OnClick="Btn1_Click" />

或者您需要删除!Page.IsPostback,并在每次加载时绑定事件处理程序。

protected void Page_Load(object sender, EventArgs e)
{
    btn1.Click += new EventHandler(Btn1_Click);
}