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