具体的な症状は次のとおりです:
1. 送信ボタンが無効であり、クリックしても応答がありません。
2. 他の手段を使用してページを送信した場合でも、サーバーはダイアログ内のフォーム データを取得できません。
理由: JQuery は、ダイアログ要素をフォームではなく本文に追加します。ページのソース コードを調査した結果、jQuery UI Dialog コントロールが初期化されたときに動的に生成された HTML 要素が、ページの最後と form 要素の後ろに追加され、元の Dialog テンプレート パーツ (form 要素が含まれている) が追加されたことがわかりました。 HTML 要素内で動的に生成されるものにも移動されました。つまり、Dialog が初期化された後、元々フォーム内にあったフォームがフォーム外に移動されたため、Dialog テンプレート内のすべてのフォームが無効になってしまいました。
方法 1:
jQuery UI のダイアログのデザインが機能なのかバグなのかわかりません。 Dialog で通常のページ送信を実現するために、上記の分析に基づいて、Dialog コントロールによって動的に生成された HTML 要素を jQuery UI コントロールの「open」イベント ハンドラーの form 要素に移動するという簡単な解決策を見つけました。コードは次のとおりです:
コードを使用します: $("#dialog").parent().appendTo("/html/body/form[0]");
または
$("#dlg") ).dialog({
open: function () {
$("body > div[role=dialog]").appendTo("form#aspnetForm");
}
});
コード中の「aspnetForm」はASP.NETアプリケーションが自動生成した現在のページのフォーム要素IDであり、ご利用の際はご自身のページのフォームIDに変更することができます。
2 番目の方法: