0

我有一个创建多个控件的函数。主要输入字段和带有动态数据的图像按钮,用于亚马逊支付按钮。

如何将这些控件添加到占位符,以便在页面上呈现它们?

我尝试在函数内创建一个占位符,添加控件并返回占位符。

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 返回。然后循环遍历数组以将每个控件添加到占位符。

4

2 回答 2

1

如果不了解更多信息,就很难确切地知道问题出在哪里。

在 Page_Init 方法中添加控件,如下所示:

plhCart.Controls.Add(returnedPlaceHolder());

这应该添加它们并将它们呈现在页面中

于 2009-07-09T22:10:48.367 回答
0

ASP.NET 页面生命周期很棘手

于 2009-07-09T06:23:01.973 回答