我有一个创建多个控件的函数。主要输入字段和带有动态数据的图像按钮,用于亚马逊支付按钮。
如何将这些控件添加到占位符,以便在页面上呈现它们?
我尝试在函数内创建一个占位符,添加控件并返回占位符。
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
我现在正在使用 Steve Temple 的建议并将这个返回的占位符添加到我页面上的占位符中
plhCart.Controls.Add(GetPayNowWidgetForm(...))
这工作正常,可能比我昨晚想出的要好。我最初的解决方案是创建控件并将它们作为 system.array 返回。然后循环遍历数组以将每个控件添加到占位符。