У меня есть функция, которая создает несколько элементов управления. В основном поля ввода и кнопка с динамическими данными для кнопки оплаты Amazon.
Как добавить эти элементы управления в заполнитель, чтобы они отображались на странице?
Я попытался создать заполнитель внутри функции, добавить элементы управления и вернуть заполнитель.
plhCart = returnedPlaceHolder()
Элементы управления не отображались, однако, когда plhCart.Controls.Count значение было правильным.
Это функция, создающая элементы управления и добавляющая их к объекту-заполнителю:
Protected Function GetPayNowWidgetForm(ByVal formHiddenInputs As SortedDictionary(Of [String], [String])) As PlaceHolder
Dim payButton As New ImageButton
Dim plhForm As New PlaceHolder
Dim counter As Integer = 1
payButton.ID = "imgPayButton"
payButton.PostBackUrl = "https://authorize.payments-sandbox.amazon.com/pba/paypipeline"
payButton.ImageUrl = "https://authorize.payments-sandbox.amazon.com/pba/images/GMPayNowWithAmazon.png"
plhForm.Controls.Add(payButton)
' Add the Key/Value pairs from formHiddenInputs
For Each kvp As KeyValuePair(Of [String], [String]) In formHiddenInputs
Dim hiddenField As HtmlControl = New HtmlControls.HtmlInputHidden
' Dim hiddenField As New HiddenField
hiddenField.Attributes.Add("name", kvp.Key)
hiddenField.Attributes.Add("value", kvp.Value)
plhForm.Controls.Add(hiddenField)
counter += 1
Next
Return plhForm
End Function
Сейчас я использую предложение Стива Темпла и добавляю этот возвращенный заполнитель к заполнителю на моей странице, используя
plhCart.Controls.Add(GetPayNowWidgetForm(...))
Это работает нормально, и, вероятно, лучше, чем то, что я придумал прошлой ночью. Моим оригинальным решением было создать элементы управления и вернуть их как массив system.array. Затем цикл по массиву, чтобы добавить каждый элемент управления в заполнитель.