Динамически добавленная кнопка делает запись обратно на страницу входа - PullRequest
0 голосов
/ 19 ноября 2018

Для динамического добавления кнопки я использую следующий код внутри LoginButton_Click sub

Dim ModeratorButton As New Button
AddHandler ModeratorButton.Click, 
AddressOf Me.ModeratorButton_Click
With ModeratorButton
 .ID = "ModeratorButton"
 .Attributes("OnClientClick") = "ModeratorButton_Click"
 .CssClass = "ModeratorButton"
 .Text = "Ενημέρωση"
End With
MessagesPanel.Controls.Add(ModeratorButton)

У меня также есть защищенный саб для обработки события

 Private Sub ModeratorButton_Click(ByVal sender As Object, ByVal e As EventArgs)

End Sub

В результате всего этого я получаю нормальную страницу
С Panel, которую я хочу, и элементами управления, которые мне нужны.
Проблема начинается, когда я нажимаю ModeratorButton, а код никогда не переходит на protected sub, о котором я упоминал ранее
Вместо этого он отправляет сообщение на LoginPage

Кто-нибудь мне поможет?

1 Ответ

0 голосов
/ 20 ноября 2018

После обратной отправки вам необходимо снова добавить AddHandler.

Например, вот так.

Private Sub _Default_Load(sender As Object, e As EventArgs) Handles Me.Load
    If Request.Form("LoginButton") IsNot Nothing Or
       Request.Form("ModeratorButton") IsNot Nothing Then
        Dim ModeratorButton As New Button
        With ModeratorButton
            .ID = "ModeratorButton"
            .Attributes("OnClientClick") = "ModeratorButton_Click"
            .CssClass = "ModeratorButton"
            .Text = "Ενημέρωση"
        End With
        AddHandler ModeratorButton.Click, AddressOf Me.ModeratorButton_Click
        MessagesPanel.Controls.Add(ModeratorButton)
    End If
End Sub

Private Sub ModeratorButton_Click(sender As Object, e As EventArgs)

End Sub

https://support.microsoft.com/en-us/help/317794/how-to-dynamically-create-controls-in-asp-net-by-using-visual-c-net

Примечание. При создании динамических элементов управления в веб-форме элементы управления должны быть созданы и добавлены в коллекцию элементов управления либо в событиях OnInit, либо в событиях Page_Load. В противном случае элементы управления ведут себя неожиданно.

...