ASP.NET ViewState 機能は、両刃の剣になる場合があります。私はほとんどのプロジェクトでこれを使用しており、開発が大幅にスピードアップします。
私の問題は、ユーザーがページを更新しようとするとビューステートが失われる場合があることです。また、ユーザーがページをブックマークしたい場合がありますが、元に戻すとビューステートが失われます。
最新のブラウザーは、まったく望ましくない POST 操作 (たとえば asp ポストバック) の結果であるページをユーザーが更新しようとすると、ばかげたダイアログを表示します。
ViewState とポストバック モデルを引き続き使用する方法はありますが、更新ダイアログ ボックスの欠点はありません。(そして、可能であればページをブックマークしてください。)
私がやりたいことの例は、レコードとチェックボックスが横にあるページを作成することです。ユーザーは、削除するすべてのレコードをチェックしてから削除ボタンをクリックするオプションがあります。ユーザーが [削除] をクリックすると、サーバー上でレコードが分析され、削除の確認ボタンで選択されたすべてのレコードが新しいページに一覧表示されます。ユーザーが更新をクリックすると、このばかげたボックスが表示され、投稿するかどうかを確認できます。
ViewState が Post Back モデルを使用した結果であることは理解しています。つまり、ほとんどの asp.net ページが POST 操作の結果であることを意味しますが、それを回避する方法はあるのでしょうか。
私がうまくいくと思った回避策:
Page_Unload イベントで、一意の ID を使用してセッションにビューステートを保存し、URL に一意の ID を使用してページが読み込まれた後、クエリ文字列パラメーターとして一意の ID を使用してユーザーを同じページにリダイレクトします。ビューステートはセッションからロードされ、現在のページに挿入されます。このようなメソッドを使用すると、ユーザーはページを更新して、常に同じ結果を得ることができます。
PS私はResponse.Redirect()
、および/またはクエリ文字列を使用できることを理解していますが、単純さを使用したいですViewState