Вложенные веб-формы ASP.Net + nyromodal: постбэки умирают после закрытия модального режима - PullRequest
1 голос
/ 14 мая 2009

У меня есть веб-страница ASP.Net, которая использует шаблон мастер-страницы.

На странице есть UpdatePanel с некоторыми основными функциями AJAX (измените значение DropDownList, и UpdatePanel обновится). Это все работает хорошо.

У меня также есть ссылка, которая выскакивает нейромодальный модал, внутри модального типа загружается другая веб-форма ASP.Net. Потому что я хочу, чтобы сама эта страница имела свои собственные функции, а не просто была статической страницей и т. Д. Ее «Создать новый» диалог, чтобы быть точным. Таким образом, он создает новую запись, затем, когда она закрывается, вы возвращаетесь на главную страницу со списком записей и т. Д.

Я использую следующий код jQuery для инициации вызовов nyromodal. Этот код также включает в себя различные другие настройки и настройки, чтобы сделать nyromodal более совместимым с ASP.Net, поскольку речь идет о пятой последовательной несовместимости, с которой я столкнулся и решил между nyromodal и ASP.Net (Урок: держитесь подальше от ASP.Net)

$(document).ready(function(){
    $(function(){
      $('.modal').live('click', function(evt){
        $(this).nyroModalManual({'blocker':'#aspnetForm',minWidth:640,minHeight:400,endShowContent:function(elt, settings) { $('input:text:first', elt.content).focus(); }});
        evt.preventDefault();
      });
    });
});

Этот код работает очень хорошо (спасибо Брайану), поскольку он решает несколько других проблем с ASP.Net и nyromodal, работающих вместе. Он даже использует блокировщик: бит #aspnetForm, который не дает nyromodal выходить за пределы основной формы обратной передачи ASP.Net с именем aspnetForm, которая предназначена для решения почти идентичной проблемы .

НО ..

Веб-страница, которую я загружаю в мой модал, также является веб-формой .Net. Так что он также имеет свой собственный встроенный постбэк aspnetForm, конечно. Поэтому, когда появляется модальный режим и я использую FireBug для проверки структуры DOM, у меня фактически есть две формы ASP.Net (вложенные). А поскольку nyromodal - это, по сути, просто div (или несколько div), теги формы по сути являются вложенными.

Так что я думаю, что это круто. Это на самом деле сбой IE7 полностью (фатальные исключения). IE7 + FireFox: когда я закрываю диалог, моя основная веб-форма больше не отправляет. Я думаю, что это было очень смущено 2 тегами формы, которые были там минуту назад.

Это должно быть действительно простым требованием, чтобы иметь возможность открывать веб-форму ASP.Net в качестве содержимого вашего мода с использованием nyromodal. Я обвиняю его в ASP.Net за то, что он такой отстойный и помещает обязательный тег «form» на каждую страницу. Если бы я использовал PHP, я бы не столкнулся ни с одной из этих проблем, с которыми я столкнулся сегодня, но я застрял, используя ASP.Bloat для рабочих целей.

Любые мысли или идеи очень ценятся! :)

Ответы [ 4 ]

0 голосов
/ 10 ноября 2009

Самое простое решение, которое я нашел, это загрузить всплывающее окно как iframe, а не как inline или через AJAX. Просто мысль. :)

0 голосов
/ 29 сентября 2009

Если вы поместите это в заголовок страницы. Это позволяет нейро-модальному закрытию симулировать обратную передачу.

<script type="text/javascript">
$(document).ready(function(){$.nyroModalSettings({
  modal: true,minWidth: ###,minHeight: ###,
  endRemove:function(){
   document.location='pageYouWantToRefresh.aspx';
  }    
});});  
</script>

просто измените document.location, и он пойдет туда, когда окно закроется.

0 голосов
/ 08 ноября 2009

Рассматривали ли вы открытие страницы в модале как iFrame, чтобы ее содержимое (новый тег формы и т. Д.) Не мешало странице хоста?

$(this).nyroModalManual({type:'iframe'});
0 голосов
/ 14 мая 2009

Я на самом деле человек, который сообщил об этой проблеме. Во-первых, вы пробовали плагин ASP.NET nyroModal, который jimbobmcgee (на той же странице, на который вы ссылались) разработан ? У меня пока нет, так как я не могу найти время для изучения документации. Если ты это сделаешь, дай мне знать, как я работаю для тебя.

Это на самом деле идеальное время ... Еще одна альтернатива, которой я занимаюсь, - использование обычных HTML-страниц вместо веб-форм в модальном режиме. Итак, я намереваюсь обернуть свой серверный код в веб-сервис и использовать jQuery, чтобы вызвать его и вернуть ответ JSON.

Прости за точность моего объяснения, так как я только начал с веб-сервисов и методов страниц, поэтому я слишком учусь. Отсюда и причина того, что я попросил кого-нибудь опубликовать простой пример "Hello World".

Надеюсь, это немного поможет.

...