2011-07-07 8 views
2

カスタムコントロールを使用して他のコントロールをレンダリングするにはどうすればよいですか?明らかに、レンダー段階では、それは遅すぎます。それは< ASP含まれていないように、テストは動作します:sometag >を、しかしTEST2は私が書いて、適切に他のコントロールをレンダリングするカスタムコントロール

protected override void Render(HtmlTextWriter writer) 
     { 
      const string test = @"<a href='http://www.something.com'></a>"; 
      const string test2 = "<asp:HyperLink ID='HyperLink1' runat='server' NavigateUrl='www.something.com'>Some Text</asp:HyperLink>"; 

      writer.Write(test2); 
     } 

答えて

5

をレンダリングすることができるようにしたいものをあなたはCreateChildControlsのメソッドas shown in this exampleオーバーライドすることができます:

protected override void CreateChildControls() 
{ 
    // Add a LiteralControl to the current ControlCollection. 
    this.Controls.Add(new LiteralControl("<h3>Value: ")); 

    // Create a text box control, set the default Text property, 
    // and add it to the ControlCollection. 
    TextBox box = new TextBox(); 
    box.Text = "0"; 
    this.Controls.Add(box); 

    this.Controls.Add(new LiteralControl("</h3>")); 
} 

をリテラル/テキストボックスコントロールの代わりに、HyperLinkコントロールをインスタンス化して追加します。例:

var link = new HyperLink(); 
link.NavigateUrl = "..."; 
link.Text = "..."; 
this.Controls.Add(link); 
+0

パーフェクト!早速のお返事ありがとうございます! –

関連する問題