マスターページテンプレートを使用するASP.NetWebページがあります。
このページには、いくつかの基本的なAJAX機能を備えたUpdatePanelがあります(DropDownListの値を変更すると、UpdatePanelが更新されます)。これはすべてうまく機能しています。
nyromodalモーダルをポップアップするリンクもあります。モーダル内に別のASP.NetWebフォームが読み込まれます。このページ自体に静的ページなどではなく独自の機能を持たせたいためです。正確には、新しい」ダイアログ。したがって、新しいレコードが作成され、閉じたらメインの「レコードのリスト」ページなどに戻ります。
次のjQueryコードを使用して、ナイロモーダル呼び出しを開始しています。このコードには、nyromodalとASP.Netの互換性を高めるためのさまざまな調整や設定も含まれています。これは、nyromodalとASP.Netの間で直面して解決した5回目の非互換性です(レッスン: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ビットを使用しても、ほぼ同じ問題を解決することを目的としたaspnetFormという名前のASP.Netのメインのポストバックフォームの外にナイロモーダルが出ることを防ぎます。
しかし..
モーダルにロードしているWebページは、.NetWebフォームでもあります。そのため、もちろん、独自のポストバックaspnetFormも組み込まれています。したがって、モーダルが表示され、FireBugを使用してDOM構造をチェックすると、実際には2つのASP.Netフォームが作成されます(ネストされています)。また、nyromodalは基本的に単なるdiv(またはいくつかのdiv)であるため、フォームタグは基本的にネストされています。
ですから、これは物事を大いに台無しにしていると思います。実際にはIE7を完全にクラッシュさせています(致命的な例外)。IE7 + FireFox:ダイアログを閉じると、メインのWebフォームがポストバックしなくなります。少し前にあった2つのフォームタグに非常に混乱していると思います。
nyromodalを使用してモーダルのコンテンツとしてASP.NetWebフォームを開くことができるようにすることは、非常に単純な要件である必要があります。ASP.Netでそれを非難しているのは、非常に不完全であり、すべてのページに必須の「フォーム」タグを配置しているためです。PHPを使用している場合、今日発生したこれらの問題は発生しませんでしたが、作業目的でASP.Bloatを使用し続けています。
どんな考えや洞察も大歓迎です!:)