ポストバックを通じてデータを保持する方法は?
-
29-10-2019 - |
質問
ASP.NET/C#Webサイトで作業しています。
データベースからデータを読み取り、辞書に保存しています ジェネラコディセタグプレ
次にそれをASP.NETチャートにバインドします ジェネラコディセタグプレ
ボタンをクリックしたときにポイントのラベルを変更したい。 ジェネラコディセタグプレ
しかし、ボタンをクリックするとポストバックが発生し、「結果」辞書に保存されているデータとグラフが失われるという問題があります。
データベースから再度読み取ることなく、ポストバックが発生したときにデータを失わないようにする方法はありますか?
助けてくれてありがとう。
解決
はい ViewState を使用してポストバック間でデータを保持します。 ジェネラコディセタグプレ
注: ビューステートのNull値を確認してください。そうでない場合は、例外またはエラーがスローされます。
他のヒント
一部の回答者は、データをViewStateに保存することを提案しています。これはASP.NETのカスタムですが、パフォーマンスを実際に損なう可能性があるため、そのルートをたどる場合は、その影響を完全に理解する必要があります。この目的のために、 ViewStateを本当に理解する<を読むことをお勧めします。/ a>。
データをViewState
またはSession
に入れて、「反対側」でデータを引き出すことができます。
ViewStateを使用してこのデータをクライアントとの間でやり取りするよりも優れた解決策は、それぞれがやり取りされるクライアントIDを作成し、このIDでキー設定されたこのデータのキャッシュをサーバー側に保持することです。 。そうすれば、このデータを毎回クライアントからサーバーに送信する必要はなく、その逆のみです。
これは私にはまだ間違っているように聞こえますが、データのやり取りのために非常に多くのオーバーヘッドが発生する他のいくつかの回答よりも優れたソリューションです。
実際、あなたは表示情報を変更しているだけであり、あなたの質問から、あなたが実際にこのデータを処理しているとは思わないので、これは本当にある種のjavascriptの仕事のようですASP.NETページと一緒に。私はこれを行ったことがありませんが、いくつかの
ViewStateを使用する代わりに、辞書に値を割り当てるためのコードを関数に移動してから、ポストバックごとにpage_loadからその関数を呼び出してはどうでしょうか。このようにして、チャートからデータを失うことはありません。
私はよくasp:HiddenFieldを使用して、クライアント側に少量の安全でないデータを保存します。
Page_Load()関数では、非表示フィールドの値を設定し、後で呼び出される関数でそれを読み戻すことができます。
クライアントユーザーは必要に応じてソースの表示を実行してページ内のデータを表示できるため、これを安全なデータに使用しないでください。