1

我有一个带有嵌套母版页的 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 函数,并且不会将表单重定向到子母版页的发布 url。如果我在没有母版页的独立页面中使用此表单,它工作正常。

请建议如何强制子母版页内的表单去发布 URL?

4

2 回答 2

3

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

在您的母版页中:

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

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

</asp:ContentPlaceHolder>

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

<asp:Content ID="Content3" ContentPlaceHolderID="cp2" Runat="Server">
</asp:Content>
于 2012-07-20T07:08:56.860 回答
0

在这里查看昆汀的回答。根据 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>
于 2012-07-20T06:50:43.927 回答