Emisión de la adición de varios controles para marcador de posición devuelto por la función
-
12-09-2019 - |
Pregunta
Tengo una función que crea múltiples controles. Principalmente campos de entrada y un ImageButton con los datos dinámicos para un botón de pago de Amazon.
¿Cómo puedo añadir estos controles para un marcador de posición para que se prestan en la página?
He intentado crear un marcador de posición dentro de la función, añadiendo controles y devolver el marcador de posición.
plhCart = returnedPlaceHolder()
Los controles no hacen sin embargo cuando hacer un plhCart.Controls.Count el valor era correcta.
Esta es la función de creación de los controles y la adición de ellos a un objeto marcador de posición:
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
Ahora estoy usando la sugerencia de Steve templo y la adición de este marcador de posición devueltos al marcador de posición en mi página utilizando
plhCart.Controls.Add(GetPayNowWidgetForm(...))
Esto está trabajando muy bien, y probablemente lo mejor que se me ocurrió anoche. Mi solución original era crear los controles y devolverlos como System.Array. Entonces bucle a través de la matriz para añadir cada control al marcador de posición.
Solución
Es difícil saber exactamente cuál es el problema sin saber un poco más.
Añadir los controles en el método Page_Init este modo:
plhCart.Controls.Add (returnedPlaceHolder ());
Y eso debería añadir ellos y hacerlos en la página
Otros consejos
página ASP.NET ciclo de vida es complicado .