Problema a adição de vários controlos de espaço reservado retornado pela função

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

  •  12-09-2019
  •  | 
  •  

Pergunta

Eu tenho uma função que cria vários controles. Principalmente campos de entrada e uma imagebutton com dados dinâmicos para um botão de pagamento Amazon.

Como posso adicionar esses controles para um espaço reservado para que eles são processados ??na página?

Eu tentei criar um espaço reservado dentro da função, adicionando controles e devolver o espaço reservado.

plhCart = returnedPlaceHolder()

Os controles não prestou no entanto, quando fazem um plhCart.Controls.Count o valor estava correto.

Esta é a função criar os controles e adicioná-los a um objeto de espaço reservado:

    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

Agora estou usando a sugestão de Steve Temple e adicionando esse espaço reservado retornou para o espaço reservado na minha página usando

plhCart.Controls.Add(GetPayNowWidgetForm(...))

Isso está funcionando bem, e provavelmente melhor do que o que eu vim com a noite passada. Minha solução original para criar os controles e devolvê-los como um System.Array. Então loop através da matriz para adicionar cada controle para o espaço reservado.

Foi útil?

Solução

É difícil saber exatamente qual é o problema sem saber um pouco mais.

Adicione os controles no método Page_Init assim:

plhCart.Controls.Add (returnedPlaceHolder ());

E isso deve adicioná-los e torná-los na página

Outras dicas

ciclo de vida do ASP.NET página é complicado .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top