Múltiplas formas na página ASP.NET
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
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?
A solução para este paypal é usar o Código de integração Paypal como Paypal não é sempre o mais amigável para integrar. O trabalho duro é feito basicamente para você.