У меня есть составной элемент управления, в который я добавляю LinkButton
динамически.Этот элемент управления находится внутри UpdatePanel
.
. Если я установлю текст LinkButton
на что-то простое, просто текст (то есть нажмите здесь для редактирования), тогда он будет работать как задумано, и я смогуобрабатывать запрос асинхронно.
Однако, если я попытаюсь использовать какую-либо разметку html вообще (т.е. <span class="fa fa-edit"></span>
) в качестве текста, он все равно будет работать, но вызывает полное обновление страницы.
Это невероятно сбивает с толку, и я просто не понимаю, почему разметка html вызывает постбэк, а текст - нет.
Пример обрезан:
Public Class LinkBase
Inherits CompositeControl
Implements INamingContainer
Private ReadOnly _linkButton As LinkButton = New LinkButton()
Protected Overrides Sub CreateChildControls()
Controls.Clear()
'_linkButton.Text = "Click here to edit" <-- works
_linkButton.Text = "<span class='fa fa-edit'></span>" <-- causes refresh
Controls.Add(_linkButton)
MyBase.CreateChildControls()
End Sub
КонецКласс
Обновление
Мой пользовательский элемент управления выглядит следующим образом:
<custom:EditLink Text="Edit Me" />
, который отображается как:
<a href="javascript:__doPostBack('shortened_ListView$l00','')">
Edit Me
</a>
Иесли я использую:
<custom:EditLink Text='<span class="fa fa-edit"></span>' />
Это выглядит как:
<a href="javascript:__doPostBack('shortened_ListView$l00','')">
<span class="fa fa-edit"></span>
</a>
Это, как и ожидалось, так как свойство Text
является внутренним свойством по умолчанию, поэтому вы можете установить его напрямую (т.е. текст) или использовать внутренний контент.Теперь причина, по которой я устанавливаю его напрямую, заключается в том, что у меня в техническом плане есть другие дочерние элементы управления <custom:EditLink>
, которые служат другим целям.
Но опять же, когда я использую html, это вызывает обновление страницы.Когда я этого не делаю, например «Редактировать меня», он использует метод ajax панели обновления.