0

ASP.NET ページのライトボックス内に送信フォームを表示する必要があります。ユーザー名が一意でないなどのエラーが送信フォームにある場合、ポストバックはライトボックスの外に ASP.NET ページをレンダリングします。どうすればその問題を解決できますか?

以下は、ライトボックスを含む .aspx ページのコード スニペットです。

<...>
<p>
    QunatumMotors is located in Detroit. Please use the link below to contact us.</p>
<p>
 <!--START CONTACT FORM OVERLAY-->

        <!-- first overlay. id attribute matches the selector -->
        <a href="**../informational/contactform.aspx"** rel="#overlay" style="text-decoration:none">
        &gt; Click here to contact us
        </a>

        <div class="simple_overlay" id="form_contact">
            <!-- overlayed element -->
            <div class="apple_overlay" id="overlay">
                <!-- the external content is loaded inside this tag -->
                <div class="contentWrap"></div>
            </div>
        </div>
 <!--END CONTACT FORM OVERLAY-->

<p>&nbsp;</p><p>&nbsp;</p>
<...>

contactform.aspx は、フォーム フィールド、フィールド バリデータ、エラーを表示するためのラベル (ユーザー名が一意でないなど)、および送信ボタンを備えた単なる標準の .aspx ページです。contactform.aspx でポストバックが発生すると、(もちろん) ライトボックスの外にレンダリングされます。ライトボックス内に contactform.aspx のポストバックを表示するにはどうすればよいですか? ご協力いただきありがとうございます!

4

1 に答える 1

1

ライトボックスのコンテンツは別のタブやウィンドウとは異なり、ホスト ページの一部になります。

つまり、によって生成された HTML をcontactform.aspxホスト ページのドキュメント オブジェクト モデル (DOM) に組み込みます。ライトボックスを有効にすると、連絡先ページに投稿するホスト ページにフォームが追加されます。

 <html><body>
     <!-- host page content here -->
     <!-- contact form content -->
     <form action="contactform.aspx">
         <!-- text boxes, buttons, etc. -->
     </form>
 </body></html>

ユーザーが送信すると、ブラウザは新しいリクエストを発行します: POST to contactform.aspx. そのリクエストは、お問い合わせフォームの HTML を返します。

これを回避するには、いくつかの方法があります。

  • ajax を使用して更新を非同期で実行します。(で UpdatePanel を使用してこれを行うこともできるかもしれませんcontactform.aspxが、私はそれらをあまり使用しておらず、それを通過していません)。

  • コントロールに変換contactform.aspxし (複数の場所で使用している場合)、ホスト ページに埋め込みます。

  • 連絡先フォームの送信ハンドラーの最後に、ライトボックスをすぐにアクティブにするようにページに指示するフラグを付けて、ホスト ページにリダイレクトします。(これには多くの問題があり、かなり壊れやすいように聞こえます...しかし、もっともらしいです。)

于 2011-02-17T16:36:49.690 に答える