1

マスターページテンプレートを使用する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を使用し続けています。

どんな考えや洞察も大歓迎です!:)

4

4 に答える 4

0

私は実際にその問題を報告した人です。まず、jimbobmcgee(リンク先の同じページ)が開発したASP.NET nyroModalプラグインを試しましたか?含まれているドキュメントを確認する時間がないので、まだ行っていません。あなたがそうするなら、私があなたのためにどのようにうまくいくかを私に知らせてください。

これは実際には完璧なタイミングです...Imが調査中の別の方法は、モーダルでWebFormsの代わりに通常のHTMLページを使用することです。そのため、サーバー側のコードをWebサービス内でラップし、jQueryを使用して呼び出しを行い、JSON応答を返す予定です。

私はWebサービスとページメソッドを始めたばかりなので、説明の正確さを許してください。私はあまりにも学んでいます。したがって、誰かに簡単な「HelloWorld」の例を投稿するように依頼する理由。

それが少し役立つことを願っています。

于 2009-05-14T13:44:16.360 に答える
0

これをページの先頭に置くと。これにより、ナイロモーダルクロージングでポストバックをシミュレートできます。

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

document.locationを変更するだけで、ウィンドウが閉じるとそこに移動します。

于 2009-09-28T20:09:56.353 に答える
0

コンテンツ(新しいフォームタグなど)がホストページに干渉しないように、モーダルでページをiFrameとして開くことを検討しましたか?

$(this).nyroModalManual({type:'iframe'});
于 2009-11-08T17:58:44.413 に答える
0

私が見つけた最も簡単な解決策は、ポップアップウィンドウをインラインまたはAJAX経由ではなく、iframeとしてロードすることです。ちょっとした考え。:)

于 2009-11-10T00:28:21.283 に答える