jQuery UI Dialogコントロールのフォームが正常にコミットされない解決方法

872 ワード

jQuery UIのDialogコントロールを最近使用したところ、このコントロールにフォームを配置すると、すべてのフォームが正常にコミットされないことがわかりました.具体的には、次のようになります.
1.提出ボタンは無効で、クリックしても何の反応もありません.
2.他の手段を用いてページをコミットしても、サーバ側はDialogのフォームデータを取得できません.
ページのソースコードを調べたところ、jQuery UI Dialogコントロールの初期化時に動的に生成されたHTML要素がページの末尾、form要素の後ろに追加され、元のDialogテンプレート部分(フォーム要素を含む)も動的に生成されたHTML要素に移動されることが分かった.すなわち,form内のフォームがDialog初期化後にform外に移動され,Dialogテンプレート内のフォームがすべて失効する.
jQuery UIのDialogのようなデザインが機能なのかバグなのか分かりません.Dialog内で正常なページコミットを実現するために、上記の分析に基づいて、jQuery UIコントロールの「open」イベントハンドラでDialogコントロールで動的に生成されたHTML要素をform要素に移動する簡単な解決方法を見つけました.コードは以下の通りです.
 
  
$("#dlg").dialog({
open: function () {
$("body > div[role=dialog]").appendTo("form#aspnetForm");
}
});

コードの「aspnetForm」はASP.NETアプリケーションが自動的に生成する現在のページform要素IDは、自分のページのform IDに変更できます.