Pergunta

Vindo de um fundo clássico ASP, eu estou acostumado a múltiplas formas em uma página, mas isso claramente limitado em uma página ASP.NET.

No entanto, tenho uma situação onde eu tenho um formulário que recolhe a entrada do usuário, salva os dados para um banco de dados, e depois eu quero render (e ajustar os valores de) uma forma especial que mensagens para o site do PayPal .

Se os valores dos campos do formulário PayPal eram estáticos, não haveria problema, mas desde que eu quero para manipular server-side a forma (para ajustar o qty, desc, campos de preços etc) este irá ser um problema.

Eu estava pensando redirecionando para uma página diferente depois de escrever para o DB, e eu suspeito que isso iria funcionar razoavelmente bem, mas é um pouco de esforço extra que pode ser desnecessária.

Também foi-me sugerido que eu poderia programaticamente tornar uma forma diferente, dependendo de onde no ciclo eu sou. Ou seja, usar um espaço reservado, e em Page_Load eu gostaria de acrescentar um formulário DB (completo com controles filho) inicialmente, e a forma PayPal depois de um postback.

Este cenário tem que ser um comum para vocês, por isso estou procurando opiniões conselhos e quaisquer amostras de código relevantes se tiver abordagem preferida.

Eu sei que posso sobreviver, mas este projeto é um veículo de aprendizagem assim que eu quero adotar o que passa para as melhores práticas.

Obrigado antecipadamente ...

Chris

Foi útil?

Solução

Você pode ter várias formas, é apenas um único formulário pode ter o atributo runat="server".

Há um monte de respostas para obter PayPal para o trabalho; mas como é um veículo de aprendizagem que podem ser batota. Em toda a honestidade, eu olhar para o API full-blown PayPal em vez de usar o método de forma um pouco simplista (com a vantagem adicional que deve esticar sua aprendizagem mais).

Caso contrário, sim, criar um formulário HTML fora da forma do lado do servidor, e adicionar um literal para ele e escrever os pedaços lá.

Outras dicas

A abordagem básica é usar dois painéis na página -. Um para a primeira forma e outra para o segundo

Você pode alterar a propriedade de visibilidade destes painéis, dependendo de qual forma você deseja exibir (durante page_load ou em qualquer momento antes do processamento).

Talvez eu esteja mal-entendido a pergunta, mas você não pode simplesmente tem 2 divs dentro do formulário, onde apenas um é visível a qualquer momento. por exemplo.

<form id="Form1" method="post" runat="server">
    <div id="getUserInput" visible="true">
          <asp:button id="btnSubmitFirst" />
    </div>
    <div id="doSubmissionToPaypal" visible="false">
          <asp:button id="btnSubmitSecond" />
    </div>
</form>

Então, em btnSubmitFirst_Click:

 doSubmissionToPaypal.visible=True
 getUserInput.visible = false

Algo nesse sentido?

scroll top