2010-12-14 3 views
0

사용자 정의 asp.net 서버 제어를 구축 중입니다. 디자인 타임에는 사용되지만 표시 런타임은 사용되지 않습니다. 나는 이것을 쓴다.asp.net의 표시 사용자 정의 태그가 없습니다

<cc1:TemplateMenu ID="TemplateMenu1" runat="server"> 
     <HeaderTemplate> 
      <asp:Label ID="Title" Text="Hello World" runat="server"></asp:Label> 
     </HeaderTemplate> 
     <SperatorTemplate>|</SperatorTemplate> 
     <FooterTemplate> 
      <asp:TextBox ID="TextBox" Text="" runat="server"></asp:TextBox> 
      <asp:Button ID="Button" Text="Click Me" runat="server"/> 
     </FooterTemplate> 
    </cc1:TemplateMenu> 

이것은 디자인 타임입니다.

이것은 서버 제어 코드 파일입니다.

Imports System 
Imports System.Collections.Generic 
Imports System.ComponentModel 
Imports System.Text 
Imports System.Web 
Imports System.Web.UI 
Imports System.Web.UI.WebControls 
Imports Yoma.Yoma.CustomControls.BasicTemplate 

Namespace Yoma.CustomControls.TemplateMenu 

    <DefaultProperty("Text"), ToolboxData("<{0}:TemplateMenu runat=server></{0}:TemplateMenu>")> _ 
    Public Class TemplateMenu 
     Inherits CompositeControl 

     Private MenuData As New ArrayList 

     Public Sub New() 

      MenuData = New ArrayList 

      Dim MenuItem As New ListItem 

      MenuItem.Text = "Apress" 
      MenuItem.Value = "http://www.apress.com" 
      MenuData.Add(MenuItem) 

      MenuItem = New ListItem 
      MenuItem.Text = "Microsoft" 
      MenuItem.Value = "http://www.microsoft.com" 
      MenuData.Add(MenuItem) 

      MenuItem = New ListItem 
      MenuItem.Text = "ASP.Net" 
      MenuItem.Value = "http://asp.net" 
      MenuData.Add(MenuItem) 

     End Sub 

#Region "HeaderTemplate" 

     Private _HeaderTemplate As ITemplate = Nothing 

     <Browsable(False), Description("The header template"), PersistenceMode(PersistenceMode.InnerProperty)> _ 
     Public Property HeaderTemplate() As ITemplate 
      Get 
       Return _HeaderTemplate 
      End Get 
      Set(ByVal value As ITemplate) 
       _HeaderTemplate = value 
      End Set 
     End Property 

#End Region 

#Region "FooterTemplate" 

     Private _FooterTemplate As ITemplate = Nothing 

     <Browsable(False), Description("The footer template"), PersistenceMode(PersistenceMode.InnerProperty)> _ 
     Public Property FooterTemplate() As ITemplate 
      Get 
       Return _FooterTemplate 
      End Get 
      Set(ByVal value As ITemplate) 
       _FooterTemplate = value 
      End Set 
     End Property 

#End Region 

#Region "SperatorTemplate" 

     Private _SperatorTemplate As ITemplate = Nothing 

     <Browsable(False), Description("The sperator template"), PersistenceMode(PersistenceMode.InnerProperty)> _ 
     Public Property SperatorTemplate() As ITemplate 
      Get 
       Return _SperatorTemplate 
      End Get 
      Set(ByVal value As ITemplate) 
       _SperatorTemplate = value 
      End Set 
     End Property 

#End Region 

#Region "Create Control" 

     Public Sub CreateControlHierarchy() 

      If HeaderTemplate Is Nothing Then 
       Dim Header As New BasicTemplateContainer 

       HeaderTemplate.InstantiateIn(Header) 
       Controls.Add(Header) 
      End If 

      Dim Count As Integer = MenuData.Count 

      For Each Item As ListItem In MenuData 
       Dim Link As New HyperLink 

       Link.Text = Item.Text 
       Link.NavigateUrl = Item.Value 
       Controls.Add(Link) 
       Controls.Add(New LiteralControl("|")) 
      Next 

      If FooterTemplate Is Nothing Then 
       Dim Footer As New BasicTemplateContainer 

       FooterTemplate.InstantiateIn(Footer) 
       Controls.Add(Footer) 
      End If 

     End Sub 

     Protected Overrides Sub CreateChildControls() 
      Controls.Clear() 
      CreateControlHierarchy() 
     End Sub 

     Public Overrides ReadOnly Property Controls() As ControlCollection 
      Get 
       EnsureChildControls() 
       Return MyBase.Controls 
      End Get 
     End Property 

     Public Overrides Sub DataBind() 
      CreateChildControls() 
      ChildControlsCreated = True 
      MyBase.DataBind() 
     End Sub 

#End Region 

    End Class 

End Namespace 

Imports System 
Imports System.Collections.Generic 
Imports System.ComponentModel 
Imports System.Text 
Imports System.Web 
Imports System.Web.UI 
Imports System.Web.UI.WebControls 

Namespace Yoma.CustomControls.BasicTemplate 

    <DefaultProperty("Text"), ToolboxData("<{0}:BasicTemplateContainer runat=server></{0}:BasicTemplateContainer>")> _ 
    Public Class BasicTemplateContainer 
     Inherits WebControl 
     Implements INamingContainer 

     Public Sub New() 
      Me.BorderWidth = 2 
      Me.BorderStyle = WebControls.BorderStyle.Outset 
     End Sub 

    End Class 

End Namespace 

제발 도와주세요. 정말 문제가 있습니다.

답변

1

페이지 코드에서 사용자 컨트롤에 대한 DataBind 메서드를 호출 했습니까? 그렇게하지 않으면 컨트롤 트리가 생성되지 않을 수 있습니다.

+0

네, 감사합니다. 모두에게 감사드립니다. 하지만 그것은 브라우저에 도달했습니다, 그것은 span 태그를 좋아합니다. 나는 이것을 좋아하지 않는다. 나는 이것을 바로 잡는다. 나는 할 수있다? 말해줘. – zanhtet

+0

@zanhtet, 스팬 태그 *와 (과) 무슨 뜻인지 모르시겠습니까?! 설명해 주시겠습니까? – VinayC

관련 문제