ASP.NET中灯箱表单上的回发问题

时间:2011-02-17 16:06:04

标签: asp.net forms postback lightbox submission

我需要在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的回发? 谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

灯箱内容与其他标签或窗口不同:它成为主页的一部分。

换句话说,它将contactform.aspx生成的HTML合并到主机页面的文档对象模型(DOM)中。激活灯箱会在发布到联系页面的主页上添加一个表单:

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

当用户提交时,他们的浏览器会发出新请求:发送到contactform.aspx的POST。该请求会返回联系表单的HTML。

有几种方法可以解决这个问题:

  • 使用ajax异步执行更新。 (你可能甚至可以通过在contactform.aspx中使用UpdatePanel来实现这一点,但我不再使用它们了,并且尽管没有使用它们。)

    < / LI>
  • contactform.aspx转换为控件(如果您在多个位置使用它)并将其嵌入主页中。

  • 在联系表单的提交处理程序的末尾,重定向到主页,其中包含指示页面立即激活灯箱的标志。 (这有很多问题,听起来很脆弱......但这似乎是合理的。)