Question

Coming from a Classic ASP background, I'm used to multiple forms on a page, but this clearly limited in a ASP.NET page.

However, I have a situation where I have a form that gathers input from the user, saves the data to a DB, and afterwards I want to render (and tweak the values of) a special form that posts to the PayPal website.

If the PayPal form's field values were static, there would be no problem, but since I want to manipulate the form server-side (to tweak the qty, desc, price fields etc) this will be a problem.

I was considering redirecting to a different page after writing to the DB, and I suspect this would work fairly well, but it's a bit of extra effort that may be unneccessary.

It has also been suggested to me that I could programmatically render a different form, depending on where in the cycle I am. That is, use a placeholder, and on Page_Load I would add a DB Form (complete with child controls) initially, and the PayPal form after a Postback.

This scenario has got to be a common one for you guys, so I'm looking for opinions advice and any relevant code samples if you have preferred approach.

I know I can get by, but this project is a learning vehicle so I want to adopt what passes for best practice.

Thanks in advance...

Chris

Was it helpful?

Solution

You can have multiple forms, it's just only one form may have the runat="server" attribute.

There are a bunch of answers to getting PayPal to work; but as it's a learning vehicle that may be cheating. In all honesty, I'd look at the full-blown PayPal API rather than use the method of the somewhat simplistic form (with the added advantage that it should stretch your learning more).

Otherwise yes, set up an HTML form outside of the server side form, and add a literal into it and write the bits and pieces in there.

OTHER TIPS

A basic approach is to use two panels on the page - one for the first form and another for the second.

You can change the visibility property of these panels depending on which form you want to display (during page_load or any time before rendering).

Maybe I'm misunderstanding the question, but can't you simply have 2 divs inside the form, where only one is visible at any time. e.g.

<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>

Then, in btnSubmitFirst_Click:

 doSubmissionToPaypal.visible=True
 getUserInput.visible = false

Something along those lines?

A workaround for this paypal is to use the Paypal Integration Code as Paypal is not always the most friendly to integrate. The hard work is basically done for you.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top