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

灯箱内容不像另一个选项卡或窗口:它成为主机页面的一部分。

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

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

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

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

  • 使用 ajax 异步执行更新。(您甚至可以通过在 中使用 UpdatePanel 来做到这一点contactform.aspx,但我不再使用它们,而且还没有通过)。

  • 转换contactform.aspx为控件(如果您在多个地方使用它)并将其嵌入到主机页面中。

  • 在联系表单的提交处理程序结束时,使用指示页面立即激活灯箱的标志重定向到主机页面。(这有很多问题,听起来很脆弱……但这是合理的。)

于 2011-02-17T16:36:49.690 回答