2009-11-13 59 views
0

我已经构建了一个自定义控件类,这使得在我的html中构建侧栏元素变得更容易。带属性的可重复使用的自定义控件

我遇到的问题是,当我设置“文本”属性,我设置它的最后一次获取用于我的网页上的每个控件实例。这是我第一次这样做,所以我假设我错过了一些基本的东西。

Namespace CustomControl 
Public Class SideBarElement : Inherits Literal 

    ''' <summary> 
    ''' Create Copyright Label 
    ''' </summary> 
    ''' <remarks></remarks> 
    Protected Overrides Sub CreateChildControls() 
     MyBase.Text = RenderHTML() 
     MyBase.CreateChildControls() 
    End Sub 

    ''' <summary> 
    ''' Set all copyright information. 
    ''' </summary> 
    Public Shared Function RenderHTML() As String 
     Dim val As String 


     val = "<div class=""side-bar-container"">" & _ 
        "<div class=""side-bar-top"">" & _ 
        "</div>" & _ 
       " <div class=""side-bar-content"">" & _ 
       _Text & _ 
        "</div>" & _ 
        "<div class=""side-bar-bottom"">" & _ 
        "</div>" & _ 
       "</div>" 

     Return val 
    End Function 

    ''' <summary> 
    ''' Create Text Property 
    ''' </summary> 
    ''' <remarks></remarks> 
    Private Shared _Text As String = String.Empty 
    Public Shadows Property Text() As String 
     Get 
      Return _Text 
     End Get 
     Set(ByVal value As String) 
      _Text = value 
     End Set 
    End Property 
End Class 

末命名空间

采用这种控制应该是这个样子。

<sidebar:SideBarElement ID="SideBarElement1" runat="server"> 
Bla Bla</br>My Fun Content.</sidebar:SideBarElement> 

任何帮助将不胜感激。

回答

0

删除文本和_Text属性解决了问题。文字控件已经内置了这些属性,所以我不需要重写它们。

Namespace CustomControl 
Public Class SideBarElement : Inherits Literal 

    ''' <summary> 
    ''' Create Copyright Label 
    ''' </summary> 
    ''' <remarks></remarks> 
    Protected Overrides Sub CreateChildControls() 
     MyBase.Text = "<div class=""side-bar-container"">" & _ 
          "<div class=""side-bar-top""></div>" & _ 
          "<div class=""side-bar-content"">" & _ 
           Text & _ 
          "</div>" & _ 
         "</div>" 
     MyBase.CreateChildControls() 
    End Sub 
End Class 

结束命名空间

+0

另外,从属性移除“共享”本来一样好解决它。 – 2009-11-14 15:14:10