0

複数のコントロールを作成する関数があります。主に入力フィールドと、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 として返すことでした。次に、配列をループして、各コントロールをプレースホルダーに追加します。

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 に答える