2011-02-17 35 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