Многоразовый пользовательский элемент управления со свойствами - PullRequest
0 голосов
/ 14 ноября 2009

Я создал собственный класс управления, который значительно облегчает создание элемента боковой панели в моем 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>

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 14 ноября 2009

Удаление свойств Text и _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

Конечное пространство имен

...