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 に答える