2010-05-07 5 views
1

데이터베이스 필드의 텍스트를 표시하는 컨트롤을 만들고 있습니다. 필드에 데이터가 포함되어 있지 않은 경우 사용할 기본 콘텐츠 (DB 필드로 설정하고 페이지에 렌더링하려는 콘텐츠)를 제공하고 싶습니다. 대단히 복잡한 것은 아니지만 태그의 내용을 가져 오는 데 문제가 있습니다.ASP.NET에서 사용자 지정 컨트롤에 포함 된 컨트롤이나 텍스트에서 렌더링 된 텍스트를 가져 오는 방법은 무엇입니까?

예 :

<custom:foo runat="server">this is the default content</custom:foo> 

내가 어떤 사용자 정의 사이의 마크 업 잡을 수 있도록하고 싶습니다 : foo에 태그를하고 난 DB 필드에 저장할 수있는 문자열로 그 렌더링.

이 작업을 수행하는 가장 쉬운 방법은 DefaultContent 속성을 만들어서 그런 식으로 설정하는 것 뿐이라고 생각하지만, 컨트롤 안에 텍스트 이상의 것을 배치하고 렌더링하는 유연성을 좋아합니다.

나는 지정된 HtmlTextWriter에 Me.RenderChildren를 사용하여 시도하고 내가 위의 예에서 얻을 모든 "<span></span>"

 Dim Builder As New StringBuilder() 
     Using Writer As New StringWriter(Builder) 
      Using HtmlWriter As New HtmlTextWriter(Writer) 
       Me.RenderChildren(HtmlWriter) 
      End Using 
     End Using 
     Return Builder.ToString() 

사람이 이런 종류의 어떤 성공이 있었나요입니까?

답변

1

ParseChildren 특성을 추가 한 다음 OnRender 메서드를 재정의하면 그에 따라 HTML을 출력 할 수 있습니다.

예 : 이 같은 :

제어

namespace MyApp.Controls 
{ 
    [ParseChildren] 
    public class MyControl : Control 
    { 
      private string m_MyText; 

      public string MyText 
      { 
        get { return m_MyText; } 
        set { m_MyText = value; } 
      } 

      protected override void Render(HtmlTextWriter writer) 
      { 
        if (!string.IsNullOrEmpty(MyText)) 
        { 
          writer.Write("Value of MyText: " + MyText); 
          return; 
        } 

        base.Render(writer); 
      } 
    } 
} 

ASPX 페이지

<!--Displays "Hello World!"--> 
<MyApp:MyControl runat="server">Hello World!</MyApp:MyControl> 

<!--Displays "Value of MyText: Hello" --> 
<MyApp:MyControl MyText="Hello" runat="server">Hello World!</MyApp:MyControl> 

<!--Displays Red Text--> 
<MyApp:MyControl runat="server"><asp:Label Text="Red Text" ForeColor="Red" runat="server" /></MyApp:MyControl> 
+0

가치가 무엇인지, 나는 VB를 사용하고 있으며 이것을 속성으로 사용해야한다. 도움을 주셔서 감사합니다. –

0

사용자 정의 : foo 컨트롤에 ID를 설정하여 코드 뒤에서 액세스 할 수 있습니까?

+0

나는 그렇지 않다. 커스텀 : foo 컨트롤 안에 모든 로직을 유지하려고 노력하고있어, 코드 페이지가 사용되는 페이지의 걱정을 결코 걱정할 필요가 없습니다. –

관련 문제