2011-10-07 6 views
1

버튼이있는 간단한 asp.net-Page가 있습니다. 코드와이벤트 핸들러 및 포스트 백 (.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> 

:

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 
} 

클릭 이벤트가 나는 버튼을 클릭 할 때 발생하지만, 내가 다시 게시와 이벤트 핸들러를 결합하는 경우가 나는 버튼의 마크 업 이벤트를 넣으면이다 OR되지 않습니다. 왜? 나는 아직도 그것을 얻지 않는다. 이벤트가 출처와 독립적으로 제기되지 않아야합니까?

답변

3

나는 이것이 당신이 요구하는 것이 확실하지 않지만, : 페이지가로드 될 때마다 이벤트 처리기를 연결하지 않으면 실행되지 않습니다. 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); 
} 
+2

예 AutoEventWireUp이 도움이되지 않는 이유가 궁금했습니다. – AGuyCalledGerald

+0

@ Jan-FrederikCarl Gotcha. 내가 몇 가지 설명과 링크를 추가했습니다. 그것은 페이지 이벤트에만 해당된다는 것을 매우 명확하게 설명하지 않습니다. –