2

バックグラウンド:

ASP.NET2.0のjquery1.3.2でjqueryblockui2.31を使用しています。

ダイアログを使用して、(通常は)非表示のDIVをポップアップモーダルダイアログの一種として表示し、ASP.NETサーバー側のコントロールを使用しています(簡単にするために、asp:Button)。AJAXはありません、または存在することが保証されていません。

jquery blockuiが行うことの1つは、いくつかのhtml要素を渡すと、ページ内のその場所からコントロールを削除し、それを本文に追加することです。

ASP.NET 2.0は、ポストバックするコントロールを$(#aspnetForm)で見つけることができる形式にすることを望んでいるようです。jquery blockuiはそれらを本体に移動しただけなので、ポストバックは起動しません

このメソッドはインスタンスメソッドであり、静的としては機能しない可能性があります(ユーザーおよびページコントロールにログインした参照...)

私はいくつかの掘り下げを行いました:

jquery blockuiを変更してフォームに追加しました(そしてセレクターと格闘してブロックを削除しました)が、IE6とIE7を中断します-オーバーレイはフォームから始まり、ダイアログ全体が中心から外れて表示されます。オーバーレイを非表示にすることはできません。IE固有のcssとIE固有のスクリプトをいじるのは本当に嫌です。

ボディとフォームにいくつかのレイヤーを追加しようとしましたが、ボディレイヤーは常にフォームレイヤーの上に表示されます(したがって、入力をブロックする不透明なレイヤーは、表示しようとしているdivの入力もブロックします)。

解決策は、divに非表示のダミーアンカーを呼び出して、元のボタンのポストバックを実行させることだと思います。sontekは、関連する質問への回答でこれを提案しました。

私の実際の質問:

私は偽のポストバックトリックで正しい方向に進んでいますか?モーダルダイアログ機能をjqueryに依存している場合は、フォールバックについて心配する必要はないと思います。

または、フォーム追加のスタイリングをいじくりまわす必要がありますか?

4

1 に答える 1

2

イベントなどの通常のasp.netの動作が必要な場合は、フォームタグ内にタグを戻すのにかなり行き詰まります。

そうは言っても、jQueryモーダルの使用に固執しているのであれば、ポストバックをトリガーすることはそれほど悪いことではないと思います。リンクされた/関連する質問から述べたようGetPostBackEventReferenceに、コードビハインドでポストバック参照を取得し、次のように、発生させたいイベントのコントロールを渡すことができます。

//assuming your button is btnMyButton and
Page.ClientScript.GetPostBackEventReference(btnMyButton, null);

このjavascript呼び出しは、フォームタグの外側で移動しているボタンを含め、他のボタンに添付できます。これは基本的にポストバックを配線し、通常どおりそのコントロールのイベントを発生させます。

最も洗練されたソリューションではありませんが、jQueryモーダルを使用する必要がある場合は、正しい方向に進んでいると思います。

于 2010-01-21T20:49:35.243 に答える