CssClass дублирует обновление UpdatePanel - PullRequest
0 голосов
/ 20 апреля 2010

В моем проекте ASP.NET Webforms есть простой пользовательский элемент управления, который наследуется от LinkButton. У него есть свойство для изменения размера, которое просто добавляет некоторые предопределенные классы CSS к элементу управления.

Protected Overrides Sub CreateChildControls()
    Dim SizeClass As String = String.Empty
    If Size = SizeEnum.Large Then
        SizeClass = "large"
    Else
        SizeClass = "small"
    End If

    Me.CssClass += " button " + SizeClass

    Me.Controls.Add(New LiteralControl(String.Format("<span class=""l"">{0}</span><span class=""r""></span><span class=""clear""></span>", Me.Text)))
    MyBase.CreateChildControls()
End Sub

Довольно просто, верно? Поэтому, когда он отображает, свойство класса выглядит примерно так: class="button small".

Когда этот элемент управления помещается внутри панели обновления вместе с некоторыми другими вещами, когда панель обновления обновляет свойство класса, для каждого из этих элементов управления становится class=" button small button small button small button small button small button small button small button small button small button small button small button small button small"

Что немного смешно. Есть идеи, почему это происходит?

1 Ответ

2 голосов
/ 20 апреля 2010

Попробуйте изменить

Me.CssClass += " button " + SizeClass

до

Me.CssClass = " button " + SizeClass

Каждый раз при визуализации элемента управления CssClass сохраняется в ViewState элемента управления. Поэтому, когда он рендерит, он продолжает добавляться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...