Multiple FORM elements in asp.net Master / Pages / User Controls

Options for multiple <FORM > elements in a Master / Page / User Control

FORM element restrictions:
  •  There could be ONLY ONE FORM  that can have  'RUNAT=" SERVER "' and VISIBLE on a Page. 
  • You can have more than one FORM with RUNAT=SERVER and VISIBLE=FALSE attributes.
  •  You can have more than one <FORM method=post> element.
  •  User control does not allow '<html> , <body> and <form>' elements. So by default the hosting or parent page should have the FORM element.
Now what works between Pages and Master Page:
      When a content page merged with  a Master page, by default the content page rendered in between a <FORM runat=server>
<ContentPlaceHolder: Content Page>
</FORM>
Mast page always contains one <FORM runat=server> automatically created.


Use Case: Embedding more than one PayPal 'Buy' buttons on your page

    PayPal 'Buy' / 'PayNow' buttons are the fastest way to implement an online payment method on your site.
If you have more than one product you will be creating more than one 'Buy' button. The problem is that each button you create is a <FORM> and <SUBMIT>.  Example: The below code will create one Buy Now Button. https://www.paypal.com/cgi-bin/webscr?cmd=_pdn_xclick_techview_outside
<form name="_xclick" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="me@mybusiness.com">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="item_name" value="Teddy Bear">
<input type="hidden" name="amount" value="12.99">
<input type="image" src="http://www.paypal.com/en_US/i/btn/btn_buynow_LG.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
</form>


There are more options how pro-grammatically  create and access multiple FORMs in this link.
A nice MSDN article on Multiple FORM options

It would be great if Microsoft can separate Html <FORM> vs <FORM runat=server> . It can be a <ASPFORM> which does not need a 'RUNAT' attribute.

Tip:  If you use MVC Framework, you do not have the default 'aspnetform' - issue.

Comments