2009-05-14 3 views
1

마스터 페이지 템플릿을 사용하는 ASP.Net 웹 페이지가 있습니다.중첩 된 ASP.Net 웹 양식 + nyromodal : 모달을 닫은 후에 포스트 백이 사라집니다.

페이지에는 일부 기본 AJAX 기능이있는 UpdatePanel이 있습니다 (DropDownList 값을 변경하면 UpdatePanel이 새로 고침됩니다). 이것은 모두 잘 작동합니다.

또한 모달 안에 nyromodal Modal을 팝업하는 링크가 있습니다. 또 다른 ASP.Net 웹 양식이로드됩니다.이 페이지 자체가 정적 페이지가 아닌 고유 한 기능을 갖기를 원하기 때문입니다. 그것의 "새로운 만들기"대화는 정확합니다. 따라서 새로운 레코드를 생성 한 다음 닫으면 레코드 목록 페이지 등으로 돌아갑니다.

다음 nyromodal 호출을 시작하기 위해 다음 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이 함께 작동하는 몇 가지 다른 문제를 해결할 때 아주 잘 작동합니다 (Brian 감사). 그것도 블로커를 사용하여 : #aspnetForm 비트는 nyromodal이 aspnetForm이라는 ASP.Net의 주 포스트 백 양식 외부로 나가는 것을 막습니다. 이것은 almost identical problem을 해결하기위한 것입니다.

하지만 ..

내 모달로로드하고있어 웹 페이지는 또한 닷넷 웹 양식입니다. 그래서 그것은 또한 내장 된 포스트 백 aspnetForm을 가지고 있습니다. 따라서 모달이 나타나고 FireBug를 사용하여 DOM 구조를 확인하면 실제로 두 개의 ASP.Net 양식 (중첩 된 양식)이 있습니다. 그리고 nyromodal은 본질적으로 단지 div (또는 몇 개의 div)이기 때문에 양식 태그는 본질적으로 중첩됩니다.

그래서 나는 이것이 큰 일을 망쳐 놓고 있다고 생각합니다. 실제로 IE7이 완전히 파손되었습니다 (치명적인 예외). IE7 + FireFox : 대화 상자를 닫을 때 주 웹 양식이 다시 게시되지 않습니다. 나는 그것이 잠시 전에 있었던 2 개의 form 태그에 의해 매우 혼란 스러웠다 고 생각한다.

nyromodal을 사용하여 ASP.Net 웹 양식을 모달의 내용으로 열 수 있다는 것은 매우 간단한 요구 사항입니다. 필자는 절름발이이기 때문에 모든 페이지에 필수 "양식"태그를 넣는 ASP.Net에 대한 책임이 있습니다. 내가 PHP를 사용했다면, 나는이 모든 문제를 경험하지 못했지만, ASP.Bloat를 작업 목적으로 사용하지 못했습니다.

어떤 생각이나 통찰력이 크게 감사드립니다! :)

+0

저는 솔직히 모달 안에 다른 웹 양식을로드하는 아이디어를 버려야 할 것이며 원래 모체 페이지의 div에 "모달 페이지"를 옮겨야 할 것이라고 생각합니다. 그런 다음 div 내용을 표시하기 위해 nyromodal을 얻으십시오. 그러면 논리 뒤에 자체 코드가 생깁니다. 어떤 생각이 들었습니까? – Aaron

답변

0

modal의 페이지를 iFrame으로 열어서 그 내용 (새 양식 태그 등)이 호스트 페이지를 방해하지 않겠습니까?

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

실제로 그 문제를보고 한 사람. 첫째, 당신은 그 jimbobmcgee (같은 페이지에 u 연결된)에 ASP.NET nyroModal 플러그인을 시도했다 developed? 나는 아직 안 풀 렸는데, 필자가 포함 된 문서를 통해 갈 시간을 찾았다. u가 tho를하는 경우에, 어떻게 나가 u를 위해 잘 작동하는지 알게하십시오.

이것은 실제적으로 완벽한 타이밍입니다. 또 다른 대안은 조사 중에 Imotype에서 WebForms 대신 일반 HTML 페이지를 사용하는 것입니다. 따라서 웹 서비스 내에서 서버 측 코드를 래핑하고 jQuery를 사용하여 호출하고 JSON 응답을 반환합니다.

방금 ​​웹 서비스 및 페이지 메서드로 시작한 것처럼 내 설명의 정확성을 용서하십시오. 너무 배우기 쉽습니다. 그러므로 누군가가 간단한 "Hello World"예제를 게시하도록 요청한 이유입니다.

희망이 조금 있습니다.

+0

감사합니다 Shalan. 그래, 나쁘지 않아. 지금까지 .NET 웹 서비스 메서드를 한 번 사용했으나 제대로 작동하는 것처럼 보였습니다.하지만 문제는 모든 것이 정적이어야하므로 페이지 상태를 잃는 것입니다. 그러나 일반적인 모달의 경우 잘하면 좋을 것입니다. 연락 및 제안에 감사드립니다. .Net 플러그인을 아직 사용하지 않았습니다. 나는 그것을 줄 수 있습니다 .. ASP.Net MVC를 전혀 사용합니까? 환호 – Aaron

+0

그래, 그게 끔찍해 .Dave WArd의 블로그를 따라 가라. 엔코 시아? 그는이 주제들을 아주 잘 다룹니다. 아직 havent MVC를 사용하여 시작했지만 ... 나는 장점을 볼 수 있습니다. 맹목적으로 그것에 들어가기 전에 MVC 패턴을 이해해야합니다! :) 내 2 개의 모달 응용 프로그램은 정보를 (예 : 데이터베이스에서) 표시하고 html 양식을 통해 데이터를 캡처합니다. jQuery 유효성 검사를 활용합니다. 아직 tho로 webservices에서 묶는 시작하지 않았습니다. 내가 어떻게 일할 수 있는지 알려주세요. 어쩌면 우리는 서로를 도울 수 있습니다. 건배! – Shalan

+0

Shalan, 환호 할 것입니다. 나는 그 블로그를 보았고 도움이되었던 몇 가지 것들에 대해 조사했다. 하지만 일반적으로 나는 ASP.Net을 선택으로 사용하지 않는다. 나는 다른 많은 웹 플랫폼을 사용했고 불행히도 가장 실망 스럽다. 다른 플랫폼의 대부분은 훨씬 더 직접적이고 두포의 내부에 들어가서 JS/HTML/CSS 등 필요한 모든 작업을 수행 할 수 있습니다. .NET은 너무 많은 부 풀림과 번거 로움없이 간단하게 사용할 수 있습니다. PHP에서 2 분이 걸리는 작업 : (그러나 지금은 청구서를 지불합니다.) – Aaron

0

페이지의 머리에 넣으면. 그것은 nyro 모달 닫음을 다시 게시 시뮬레이션 할 수 있습니다.

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

단지 문서 변경 위치를 변경하면 창이 닫히면 표시됩니다.

0

가장 쉬운 해결책은 팝업 창을 iframe으로로드하거나 AJAX를 통해 팝업 창을로드하는 것입니다. 그냥 생각. :)

관련 문제