Вопрос

Предыстория:

Я использую jquery blockui 2.31 на jquery 1.3.2, на ASP.NET 2.0.

Я использую диалоговое окно, чтобы показать (обычно) скрытый DIV как своего рода всплывающее модальное диалоговое окно с ASP.NET элементами управления на стороне сервера в нем (для простоты, asp: Button).AJAX нет, или гарантированно не будет.

Одна из вещей, которые делает jquery blockui, если вы передадите ему некоторые html-элементы - это то, что он удалит элемент управления с его места на странице и добавит его к Тело.

ASP.NET 2.0, похоже, хочет, чтобы элементы управления, которые публикуются обратно, были в форма вы можете найти с помощью $(#aspnetForm).jquery blockui просто переместил их в Тело, так что обратная отправка никогда не стреляет.

Метод является методом экземпляра и, вероятно, не будет хорошо работать как статический (ссылки, зарегистрированные в элементах управления user и page ...)

Я кое-что раскопал:

Я изменил jquery blockui для добавления в форму (и боролся с селектором, чтобы удалить блок), но это мешает IE6 и IE7 - наложение начинается с формы, и все диалоговое окно отображается не по центру.Скрывать наложение не вариант, и я действительно ненавижу возиться с специфичным для IE css и специфичным для IE скриптом.

Я попытался добавить некоторые слои к телу и некоторые к форме, но слои тела всегда отображаются поверх слоев формы (поэтому непрозрачный слой, который блокирует ввод, также будет блокировать ввод в div, который я пытаюсь показать).

Я думаю, что решение заключается в том, чтобы div вызывал скрытый фиктивный якорь для выполнения обратной передачи исходной кнопки. сонтек предложил это в своем ответе на связанный с этим вопрос.

Мой актуальный вопрос:

На правильном ли я пути с помощью трюка с фальшивой обратной отправкой?Я полагаю, что если я полагаюсь на jquery для функциональности модального диалога, мне не следует беспокоиться о резервном варианте.

Или мне следует продолжать возиться со стилем добавления формы?

Это было полезно?

Решение

Вы в значительной степени застряли, помещая теги обратно в тег формы, если хотите нормального поведения asp.net такое поведение, как запуск событий.

Тем не менее, если вы застряли на использовании jQuery modal, я не думаю, что запуск обратной передачи - это так уж плохо.Как вы упомянули в связанном / related question , вы можете получить ссылку на обратную отправку GetPostBackEventReference в вашем коде-за и передайте в управление событие, которое вы хотите запустить, например:

//assuming your button is btnMyButton and
Page.ClientScript.GetPostBackEventReference(btnMyButton, null);

Вы могли бы присоединить этот вызов javascript к любой другой кнопке, включая кнопку, которую вы перемещаете за пределы тега формы.Это, по сути, приведет к подключению обратной передачи и вызовет события этого элемента управления, как обычно.

Не самое элегантное решение, но я думаю, что вы на правильном пути, если вам нужно использовать jQuery modal.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top