我有一个带按钮的简单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与回发绑定,则是这样。为什么?我还是得不到它。该事件是否应该独立于其来源而提出?
答案 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);
}