一个asp.net页面上的两个表单

时间:2012-07-20 06:39:22

标签: c# asp.net

我有一个带有嵌套母版页的asp.net页面。父母版页面具有以下形式标记:

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

并在儿童母版页中。我有一个侧栏,我有另一种形式(不是runat = server“),如下所示:

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

但是当我点击提交按钮时,回复发生但是没有调用javascript函数,并且表单没有被重定向到子母版页的发布网址。如果我在没有母版页的独立页面中使用此表单,它可以正常工作。

请建议如何在子母版页内部强制表单转到发布网址?

2 个答案:

答案 0 :(得分:3)

根据HTML标准,您不能拥有嵌套表单,即表单内部形式。 您如何在表单标记之外的母版页中创建另一个内容占位符 然后您可以在子页面中使用表单。像这样:

在您的母版页中:

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

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

</asp:ContentPlaceHolder>

在您的子页面中,在此标记中添加表单:

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

答案 1 :(得分:0)

在此处查看Quentin的answer。根据HTML标准,您无法将表单嵌入到彼此中。如果你这样做,大多数浏览器会忽略内部形式。

最佳解决方案是在母版页上创建一个额外的asp:Content,您可以在其中放置辅助表单。

您可以从基本母版页级联asp:Content:

<!-- 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>
相关问题