2011-02-17 56 views
0

我需要在ASP.NET页面的lightbox中显示提交表单。 如果提交表单中存在错误(如用户名不唯一),则回发会在lightbox外部呈现ASP.NET页面。 我该如何解决这个问题?问题与在ASP.NET中的lightbox窗体上回发

这里是包括灯箱.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发生回传时(当然)它会在lightbox外部呈现。我如何显示lightbox中的contactform.aspx回传? 感谢您的帮助!

回答

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> 

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

有几种方法你可能解决的是:

  • 使用AJAX异步执行更新。 (你可能甚至能够通过使用contactform.aspx中的UpdatePanel来做到这一点,但我不再使用它们,并且没有通过)。

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

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

+0

我能做到这一点,你在#1(阿贾克斯)说:为了得到它与Ajax和UpdatePanel中我不能工作没有再动态加载外部内容。它给了我ScriptManager的错误。我的工作方式是在contentWrap div标签之间复制和粘贴外部内容,并将href从锚标签中取出。现在它工作正常。谢谢! – Marti 2011-02-19 08:17:34