JQuery blockui и конфликты обратной передачи ASP.NET - PullRequest
2 голосов
/ 21 января 2010

Справочная информация:

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

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

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

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

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

Я немного покопался:

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

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

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

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

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

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

1 Ответ

2 голосов
/ 21 января 2010

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

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

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

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

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

...