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

StackOverflow https://stackoverflow.com/questions/862259

Вопрос

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

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

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

Я использую следующий код jQuery для инициации ниромодальных вызовов.Этот код также включает в себя различные другие настройки и настройки, чтобы сделать 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.Он даже использует бит Blocker:#aspnetForm, который не позволяет nyromodal выходить за пределы основной формы обратной передачи ASP.Net с именем aspnetForm, которая предназначена для решения почти идентичная проблема.

НО..

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

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

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

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

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

Решение

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

$(this).nyroModalManual({type:'iframe'});

Другие советы

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

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

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

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

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

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

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

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

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