2013-06-04 4 views
0

ASP.NET WebForms에 대한 자체 컨트롤을 작성합니다. 단지 하나의 버튼. 클릭하면 라벨에 텍스트 "Hello World"가 표시되어야합니다. 그러나 그것은 일어나지 않습니다. 버튼을 클릭하면 레이블 텍스트가 변경되지 않습니다. 왜? 내 제어 :사용자 지정 웹 컨트롤의 단추가 호출되지 않습니다.

public class MyButton : Control, IPostBackEventHandler 
{ 
    protected override void Render(HtmlTextWriter writer) 
    { 
     writer.AddAttribute("type", "submit"); 
     writer.AddAttribute("value", "ClickMe"); 
     writer.AddAttribute("name", "BtnChange"); 
     writer.RenderBeginTag(HtmlTextWriterTag.Input); 
     writer.RenderEndTag(); 

     base.Render(writer); 
    } 

    public delegate void OnClickEventHandler(object sender, EventArgs args); 

    public event OnClickEventHandler Click1; 

    public void RaisePostBackEvent(string eventArgument) 
    { 
     Click1(this, new EventArgs()); 
    } 
} 

내 ASP 페이지 :

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestButton.aspx.cs" Inherits="Hello.TestButton" %> 
<%@ Register assembly="Hello" namespace="Hello" tagPrefix="MyButton" %> 

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title></title> 
</head> 
    <body> 
    <form id="form1" runat="server"> 
     <div> 
     <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 
     <br /> 
     <MyButton:MyButton runat="server" OnClick1="MyButton_OnClick"></MyButton:MyButton> 
     </div> 
    </form> 
    </body> 
</html> 

그리고 페이지 핸들러 :

namespace Hello 
{ 
    public partial class TestButton : System.Web.UI.Page 
    { 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
    protected void MyButton_OnClick(object sender, EventArgs args) 
    { 
     Label1.Text = "Hello World!"; 
    } 
    } 
} 
+0

'RaisePostBackEvent'에 대한 호출이 없기 때문에 –

+0

버튼에 ID를 설정 한 후에 시도 했습니까? – ykatchou

답변

0

당신은 버튼의 이름 속성에 대한 컨트롤의 UniqueID 속성을 사용해야합니다.

관련 문제