Всплывающее окно ColorBox не соответствует коду - PullRequest
0 голосов
/ 27 ноября 2011

Я использую плагин ColorBox jQuery , но столкнулся со странной проблемой. Ниже мой код:

<script>
            $("#spv14DL").colorbox({width: "500px",
                                 height:"500px" });
</script>
...
<a href="/popups/spv14.aspx" id="spv14DL">Open this popup!</a><br />

Когда я нажимаю на ссылку, все открывается, как и ожидалось. Но когда я нажимаю на кнопку, которая есть на моей странице aspx, она никогда не находит мой код позади spv14.aspx и перенаправляет на baseUrl.com/spv14.aspx вместо baseUrl.com/popups/spv14.aspx, что вызывает ошибку 404.

Я делаю что-то не так, что может вызвать такой тип поведения?

1 Ответ

2 голосов
/ 28 ноября 2011

Причиной этой ошибки является то, что по умолчанию плагин colorbox извлекает содержимое указанной страницы с помощью асинхронного запроса GET и помещает его в диалоговое окно.Так что, если вы проверите разметку страницы при открытии диалога, вы обнаружите, что в контейнере диалога есть часть ссылочной страницы с элементом form и всеми элементами управления внутри.Также атрибут действия этой формы ссылается на страницу spv14.aspx без какого-либо пути к ней.На самом деле существует несколько решений.Давайте рассмотрим их от самого сложного до самого простого:

  1. Атрибут действия элемента form страницы spv14.aspx можно изменить следующим образом: action="\popups\spv14.aspx".Недостаток этого решения в том, что после действия обратной реакции пользователь будет перенаправлен на всплывающую страницу.Этот разрыв можно исправить с помощью вызова метода Response.Redirect в методе PreRender всплывающей страницы, если свойство IsPostback возвращает значение true: if(IsPostBack) { Response.Redirect(Request.UrlReferrer.ToString(), false); }.На мой взгляд, это решение выглядит не очень хорошо.
  2. Вы можете отклонить публикацию обратно при нажатии кнопки отправки в всплывающей форме и использовать асинхронный запрос для всплывающего статического метода страницы, передавая все значения элемента управления, необходимые для выполнения.действие.Таким образом, вы не можете использовать ViewState страницы и управляете свойствами в коде сервера.
  3. И последнее, но не менее важное решение - показать всплывающую страницу с использованием встроенного фрейма в контейнере элемента диалога с передачей опции iframe: trueв плагин colorbox.Это самый простой способ использовать все содержимое страницы aspx в вашем диалоговом окне.

Вывод: третий способ с использованием опции iframe является наиболее нативным и легким доступным решением.

PS извините за мой английский :) 1025 *

...