Проблема с обратной передачей в форме лайтбокса в ASP.NET - PullRequest
0 голосов
/ 17 февраля 2011

Мне нужно отобразить форму отправки внутри лайтбокса страницы 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 Ответ

1 голос
/ 17 февраля 2011

Контент лайтбокса не похож на другую вкладку или окно: он становится частью главной страницы.

Другими словами, он включает 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 для contactform.aspx. Этот запрос возвращает HTML-код .

Есть несколько способов обойти это:

  • Используйте ajax для асинхронного обновления. (Вы могли бы даже быть в состоянии сделать это с помощью UpdatePanel в contactform.aspx, но я их больше не использую и пока этого не сделал).

  • Преобразование contactform.aspx в элемент управления (если вы используете его в нескольких местах) и встраивание его в страницу хоста.

  • В конце обработчика отправки контактной формы перенаправьте на страницу хоста с флагом, который указывает странице немедленно активировать лайтбокс. (Это имеет множество проблем и звучит довольно хрупко ... но это правдоподобно.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...