Problème l'ajout de plusieurs contrôles à espace réservé retourné par la fonction
-
12-09-2019 - |
Question
J'ai une fonction qui crée de multiples contrôles. champs Principalement entrée et une ImageButton avec des données dynamiques pour un bouton de paiement Amazon.
Comment puis-je ajouter ces contrôles à un espace réservé afin qu'ils sont rendus sur la page?
J'ai essayé de créer un espace réservé dans la fonction, l'ajout de contrôles et de retourner l'espace réservé.
plhCart = returnedPlaceHolder()
Les contrôles ne rendent cependant, quand faire un plhCart.Controls.Count la valeur était correcte.
Ceci est la fonction de créer les contrôles et les ajouter à un objet d'espace réservé:
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
J'utilise maintenant la suggestion de Steve Temple et en ajoutant retourné espace réservé à l'espace réservé sur ma page en utilisant
plhCart.Controls.Add(GetPayNowWidgetForm(...))
Cela fonctionne très bien, et sans doute mieux que ce que je suis venu hier soir. Ma solution originale était de créer les contrôles et les retourner en System.Array. boucle ensuite à travers le réseau pour ajouter chaque commande à l'espace réservé.
La solution
Il est difficile de savoir exactement quel est le problème sans le savoir un peu plus.
Ajoutez les contrôles dans la méthode Page_Init comme ceci:
plhCart.Controls.Add (returnedPlaceHolder ());
Et qui les et les rendre devrait ajouter dans la page