2

私の質問は、ASP.NET4.0WebFormsアプリに自動保存を実装するための高性能な方法についてです。

さまざまなjQuery自動保存プラグインの使用について多くのことを読みましたが、それらはすべて最小限の入力要素に最適に使用されているようです。また、ユーザーがフォームに戻ったときにASP.NETフォームに再度入力するソリューションは見つかりませんでした。

多くの要素を含むFormViewと、ネストされたリストビューとフォームビューがあります。LinqDataSourceを使用してFormViewとその子にデータを入力します。

WebサーバーはIIS7です。DBはLinqtoSQL経由のSQLServerであり、MSMQまたは必要なその他のサーバーコンポーネントにアクセスできます。

フォーム要素をAutoPostBackに設定したUpdatePanelと、非同期リクエストを強制的にシーケンシャルにするためのカスタムjavascriptを使用して、自動保存を実装しました。これは、LinqからSQLへの同時実行エラーを回避するためです。各UpdatePanel非同期ポストバックは、フォーム全体をSQLServerのドラフトテーブルに保存します。あまりエレガントではありませんが、ゆっくりと機能します。

問題は、往復が遅すぎることです。これにより、保存中に行われたフォームの変更は保存されず、ユーザーがその間にスクロールした場合、フォームは保存された要素にジャンプして戻ります。

だから私は今私がする必要があると思っています:

  1. 同じ方法を維持し、フォームからlinqエンティティを入力して、MSMQに保存します。次に、これを引き出して、ユーザーがフォームを送信したとき(または、セッション終了時、または次回再度ログインしたとき)に永続化します。また
  2. https://github.com/nervetattoo/jquery-autosave/のようなものを使用して、シリアル化されたフォームデータをMSMQに保存します。これはかなり高速ですが、問題は、ユーザーが後続のセッションでフォームに戻ったときに、データをASP.NETフォームに戻す方法がわからないことです。

また、各ポストバックに「送信」フォームの入力値だけを保存することも考えました。これを辞書で実行し、MSMQで辞書を維持することができます。

ところで、ユーザーがブラウザを閉じてもフォームデータが保持されるようにする必要があるため、キャッシュまたはセッションを使用できません。だから私はもっと頑強なものが必要です。

あなたの意見に非常に興味があります-すべてが大いに感謝しています!

乾杯..

4

1 に答える 1

0

前作では、ボタンやタイマーを隠したコントロール パネルを内部に配置しても問題なく機能していました。自動保存中/自動保存後にユーザーが追加するのは正常です。そのため、最終的なものではなく自動保存です。これらの変更は、次回の自動保存で保存されます。

フォーム全体のページで通常の 1 つの UpdatePanel を使用する (コントロールは内部になく、内部にはタイマー コントロールまたはボタン コントロールのみ)、シーケンシャル JS などで何もする必要はありませんでした。おそらく「非常に」頻繁に自動保存を行っていると思いますか?大きなフォームの場合は、30 ~ 120 秒で十分です。

通常、MSMQ や DB などに下書きがあります。ユーザーがフォームで作業するようになったときに存在する場合は、そこから記入し、そうでない場合は通常どおりに作業します。

jQuery プラグインも非常に興味深いようです。

于 2011-02-28T23:14:44.147 に答える