0

ASP.NET アプリケーションを使用しています。システムの一部に、システム上でジョブを作成または更新するために使用される非常に長い FormView が含まれています。お客様が懸念している問題の 1 つは、データ損失の可能性です。つまり、ユーザーがフォームに変更を加えて、[保存] をクリックするのを忘れてしまうことです。Web は本質的にステートレスであり、それが難しいことを説明しましたが、これは依然として大きな懸念事項です。

明らかな「解決策」は、値が変更されるたびにポストバックすることですが、UpdatePanel を使用しても非常に遅く、ユーザーはフォーカスされた列を失います。また、すべてのリンクをキャプチャし、保存していないことをユーザーに知らせるプロンプトを表示することも検討していましたが、ブラウザーを閉じるなど、多くの変数が残ります。

私が考えたのは、JSON 文字列を構築し、jQuery を使用して AJAX を使用して別のページに投稿し、変更をデータベースに保存するか、[保存] をクリックするまでセッションに保持し、常に警告することができるということです。未保存の変更。

これは賢明に聞こえますか、それとも明らかな何かが欠けていますか? 自動的に保存するオンラインのアプリはたくさんありますが、それらはどのような方法を使用していますか?

4

3 に答える 3

0

明らかな「解決策」は、値が変更されるたびにポストバックすることです

ユーザーが変更を加えるとすぐにデータを保存できるため、これは優れたソリューションです。その理想は今です。

フォーカスを失うことは、ここでは問題ではないかもしれません。問題は、ページの重いコードが原因で遅くなる可能性があります。コードを編集してブロックに変更してみてください。条件が真の場合にのみ各ブロックが実行されるようにします。このようにして、コードを実際のバージョンのほぼ 1/4 に減らすことができます。

また、すべてのリンクをキャプチャし、保存していないことをユーザーに知らせるプロンプトを表示することも検討していましたが、ブラウザーを閉じるなど、多くの変数が残ります。

||確かに、これを最小限に抑えるには、演算子を使用して簡単なトリックを試すことができます。何かを確認し、変更されている場合は、ユーザーに警告し、実行を中断します。このような:

if(value == changed) {
  alert('You have not saved yet!');
  return false;
} else if (sec_value == changed) {
  // go on..
}

つまり、保存されていない値が見つかった場合はコードの実行を停止するため、ブラウザーはそれ以上値を検索しません。

データをDBに保存するという最初のアイデアを使用できます。ユーザーはセッションに固執したくないため、すべてのキャッシュと Cookie を削除したり、新しい OS を再インストールしたりする可能性があるため、これは問題です。データは常に手元に置いておく必要があります。

常に警告し続けると、JS アラートにうんざりしてしまいます。このため、あなたの側で ajax を介してデータを保存することをお勧めします。

于 2013-10-19T22:50:12.740 に答える
0

通常、クライアント側にのみ値を保存します。ローカル ストレージとセッション ストレージを確認してください: http://www.w3schools.com/html/html5_webstorage.asp

于 2013-10-19T22:38:09.060 に答える
0

Sisyphus.js を使用すると、次のことができます。

読む: http://coding.smashingmagazine.com/2011/12/05/sisyphus-js-client-side-drafts-and-more/

http://sisyphus-js.herokuapp.com/

于 2013-10-19T22:58:27.300 に答える