2

私は過去に、WebMatrix でセッション状態を維持し、タイムアウトになると予想されるときにそれらを処理する際に、常にかなりの問題を抱えていました (主にまだ学習中のため)。

ユーザー入力は常に覚えておく必要があります。ユーザーが送信してカスタム エラーが発生した場合に、すべての情報をフォームに再入力する必要がないようにしたいからです。

タイムアウトしたセッション変数が必要になったときに、それらを適切に維持および管理できる方法を(最終的に)見つけたと思います。

Web ページ間でデータを転送する方法は他にもいくつかあることを認識しており、該当する場合は、それらが確実に最初に使用されると信じています。この質問は、セッション変数が最良の選択肢であると感じた場合にのみ関係します。

私の問題は、私はそれを理解したといつも思っています。そして、コーディングの半分以上を設定した後で初めて、なぜそれがうまくいかないのかを理解し、ずさんな (しかし効果的な) 回避策を見つけます。それは少なくともそのプロジェクトで機能します。

セッション変数を使用するプロジェクトでは、共通データベースと Web インターフェイスの組み合わせを使用します。通常、エントリの追加ページ、エントリの編集ページ、エントリの検索ページの 3 つのメイン ページがあります。エントリの追加ページとエントリの検索ページは、最終的にエントリの編集ページに投稿してリダイレクトします。

次のプロジェクトを開始する前に、私の方法が少なくとも正しい方向を目指しているかどうか、またはまだこれに完全に正しく近づいていないかどうかを調べるのが賢明だと思いました.

これがうまくいくと私が思うものです(ただし、少し簡単すぎるようです):

  1. ページごとにローカル変数を使用します。
  2. (IsPost) ブランチでは、投稿/リダイレクトの直前に、ローカル変数に基づいてセッション変数を割り当てます。
  3. 別のページで、リダイレクトされた直後に、セッション変数を使用して新しい静的ローカル変数を割り当てます。

つまり、(必要に応じて) セッション変数を使用して、完全に許容可能な時間内に発生するデータを転送し (セッション状態がタイムアウトするのに十分な時間を許可しない)、ローカル変数のみを参照します。ページごとに必要です。

私は気が狂っていますか、それとも WebMatrix でセッション状態を操作しなければならない場合に、これを処理するための最良の方法 (または少なくともまともな方法) ですか?

これがばかげた質問でしたら申し訳ありませんxD

4

1 に答える 1

2

私の意見では、ユーザーがフォームに入力した内容を記憶するためにセッション変数を使用するべきではありません。フォーム (追加または編集) は、検証のためにそれ自体に投稿する必要があります。そうすれば、Request.Form コレクションで値を使用できます。検証エラーが発生した場合は、フォームを簡単に再入力できます。送信が成功したら、データベースを挿入または更新し、別のページにリダイレクトして送信の重複を防ぎます。

セッション変数は、適切に使用すれば非常に使いやすいものです。間違ったシナリオで使用しているため、問題が発生していると思います。

于 2012-12-18T20:42:28.253 に答える