DotnetSparrow
DotnetSparrow

Reputation: 27996

two forms on one asp.net page

I have an asp.net page with a nested master page. Parent master page has form tag like this:

 <form runat="server">
 ...
 ....
 </form>

and in child master page. I have a side bar where I have another form ( not runat=server") like this:

<form method="post" action="https://app.icontact.com/icp/signup.php" name="icpsignup" id="icpsignup3297" accept-charset="UTF-8" onsubmit="return verifyRequired3297();" >

<input type="hidden" name="redirect" value="http://www.abconline.com/newsletter-sign-up.aspx">
<input type="hidden" name="errorredirect" value="http://www.icontact.com/www/signup/error.html">

....
....
....
<input type="submit" name="Submit" value="Get Deals">
</form>

<script type="text/javascript">

    var icpForm3297 = document.getElementById('icpsignup3297');

    if (document.location.protocol === "https:")

        icpForm3297.action = "https://app.icontact.com/icp/signup.php";
    function verifyRequired3297() {
        if (icpForm3297["fields_email"].value == "") {
            icpForm3297["fields_email"].focus();
            alert("The Email field is required.");
            return false;
        }


        return true;
    }
</script>

but when I hit submit button, post back happens but javascript function is not called and form is not redirected to post url of child master page. It works fine if i use this form in a standalone page without master pages.

Please suggest how to force form inside child master page to go to post URL ?

Upvotes: 1

Views: 4763

Answers (2)

just.another.programmer
just.another.programmer

Reputation: 8815

See Quentin's answer here. Per HTML standards you cannot embed forms inside one another. Most browser's will ignore the inner form if you do.

Best solution would be to create an additional asp:Content on the master page where you can put secondary forms.

You can cascade the asp:Content from the base master page:

<!-- on base master page -->
<form runat="server" ...>
    main content here
</form>

<asp:ContentPlaceHolder runat="server" ID="SecondaryFormContentBase"></asp:ContentPlaceHolder>


<!-- on child master page -->
<asp:Content ID="Content1" ContentPlaceHolderID="SecondaryFormContentBase" Runat="server">
    <asp:ContentPlaceHolder runat="server" ID="SecondaryFormContent"></asp:ContentPlaceHolder>
</asp:Content>

Upvotes: 0

user1465587
user1465587

Reputation:

As per HTML standards you cannot have nested forms i.e. form inside form. How ever you can create another content place holder in your master page outside the form tag then you can use forms in your child page. like this:

In your master page:

<form>
----
----
</form>

<asp:ContentPlaceHolder id="cp2" runat="server">

</asp:ContentPlaceHolder>

In your child page add form in this tag:

<asp:Content ID="Content3" ContentPlaceHolderID="cp2" Runat="Server">
</asp:Content>

Upvotes: 3

Related Questions