複数のコントロールを追加することの問題は、関数によって返されたプレースホルダ
-
12-09-2019 - |
質問
私は、複数のコントロールを作成する機能を持っています。主に、入力フィールドとAmazonの支払いボタンの動的データとIMAGEBUTTON。
これらはページにレンダリングされているので、どのように私はプレースホルダにこれらのコントロールを追加することができますか?
Iは、関数内のプレースホルダを作成するコントロールを追加し、プレースホルダを戻す試みました。
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としてそれらを返します。次いで、プレースホルダの各制御を追加するために、配列をループ。
解決
これは、問題はもう少し知らずにいる内容を正確に把握するのは難しいです。
そのようPage_Init方法でコントロールを追加します:
plhCart.Controls.Add(returnedPlaceHolder());
そして、それはそれらを追加し、ページでそれらをレンダリングする必要があります。
他のヒント
ASP.NETページのライフサイクルは、トリッキーのですます。
所属していません StackOverflow