LinkButton в UpdatePanel работает нормально, пока я не попытаюсь использовать HTML-разметку в качестве текста - PullRequest
0 голосов
/ 12 ноября 2018

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

...