Problème l'ajout de plusieurs contrôles à espace réservé retourné par la fonction

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

  •  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é.

Était-ce utile?

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

Autres conseils

cycle de vie est la page ASP.NET délicate .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top