部分ビューを含むダイアログがあります。ユーザーがダイアログをキャンセルして保存しないことにした場合、ユーザーがダイアログ内で行った変更を元に戻すことは可能ですか?
ユーザーが同じダイアログを開いた場合、ユーザーがダイアログをキャンセルしても、変更は残っています。コントローラーを呼び出して部分ビューを置き換えることができることを知っています。
他に方法はありますか?
部分ビューを含むダイアログがあります。ユーザーがダイアログをキャンセルして保存しないことにした場合、ユーザーがダイアログ内で行った変更を元に戻すことは可能ですか?
ユーザーが同じダイアログを開いた場合、ユーザーがダイアログをキャンセルしても、変更は残っています。コントローラーを呼び出して部分ビューを置き換えることができることを知っています。
他に方法はありますか?
sanke - 部分ビューが最初にロードされたときに、div の内容を .data() 要素に格納できます。次に、(保存せずに) キャンセルされた場合は、ダイアログ用に作成された div に .data() をプッシュして戻します。
行動は言葉よりも雄弁です:
// the partial getting loaded
$("#targetDiv").html(data);
var foo = document.body;
jQuery.data(foo, "myKey", data);
キャンセルすると、逆のことができます:
// inside the dialog cancel event
var foo = document.body;
var data = jQuery.data(foo, "myKey");
$("#targetDiv").html(data);
試してみる...
私はaspnet mvcについてあまり知りませんが、クライアント側とスクリプトについて知っている限り、ダイアログでクライアント側を操作している限り、ダイアログはDOMの一部であるため、既に挿入されたものはそこに残りますページ。この種の問題を回避するために、私は通常、dialoq 内のさまざまなフィールドへのセレクターを保持し、opendialog メソッドが呼び出されたとき、またはダイアログがキャンセルされたときにデフォルト値に初期化される「ダイアログ」クラスを自分で作成します。そのプラスの価値は、ダイアログのすべてのクライアント側スクリプトが 1 つの適切な JavaScript クラスに含まれていることです。