複数のコントロールを追加することの問題は、関数によって返されたプレースホルダ

StackOverflow https://stackoverflow.com/questions/1101723

  •  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ページのライフサイクルは、トリッキーのですます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top