eventhandler和回发(.net)

eventhandler和回发(.net),.net,event-handling,postback,.net,Event Handling,Postback,我有一个带按钮的简单asp.net页面 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" MasterPageFile="~/MasterPage.master"%> <asp:Content runat="server" ID="content" ContentPlaceHolderID="ContentPlaceHolder1">

我有一个带按钮的简单asp.net页面

<%@ 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>

单击按钮时不会引发Click事件,但如果我将事件放在按钮的标记中,或者使用回发绑定EventHandler,则会引发Click事件。为什么?我还是不明白。事件是否应该独立于其源而引发?

我不能100%确定这是您要问的问题,但是:如果您没有在每次加载页面时连接事件处理程序,它将不会运行。如果你认为AutoEventWireUp应该这样做,那不是它的目的。为了澄清这一点,对的描述是

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

它需要在控件本身上声明:

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

@Jan FrederikCarl明白了。我添加了一些说明和一个链接。它没有很清楚地解释它只是用于页面事件。
<asp:Button runat="server" ID="btn1" Text="Click me" OnClick="Btn1_Click" />
protected void Page_Load(object sender, EventArgs e)
{
    btn1.Click += new EventHandler(Btn1_Click);
}