問題タブ [viewstate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - ビルドされ、エンコードされたViewStateの値を取得するにはどうすればよいですか?
base64-encoded
の表現を取得する必要がありViewState
ます。明らかに、これはリクエストのライフサイクルのかなり遅い時間まで利用できません。これは問題ありません。
たとえば、ページの出力に次のものが含まれている場合:
値を取得するためのサーバー側の方法が必要です"/wEPDwUJODU0Njc5MD...=="
明確にするために、PostBackではなく、ページがレンダリングされているときにこの値が必要です。たとえば、クライアントから返されるViewStateではなく、クライアントに送信されているViewState値を知る必要があります。
c# - ViewStateはSafariでのみ無効です
私が維持しているサイトの1つは、の使用に大きく依存していますViewState
(これは私のコードではありません)。ViewState
ただし、が肥大化している特定のページでは、Safariが"Validation of viewstate MAC failed"
エラーをスローします。
これはSafariでのみ発生するようです。Firefox、IE、Operaはすべて同じシナリオで正常に読み込まれます。
asp.net - ASP.NET AJAX / ICallbackEventHandler を使用した状態の追跡
ASP.NET AJAX ページで状態を維持することに問題があります。短いバージョン:非同期呼び出し中にサーバーが行った状態の変更を反映するために、非同期コールバックが行われた後にページの ViewState を更新する何らかの方法が必要です。
これはよくある問題のようですが、説明のために私のシナリオを説明します。
私は、いくつかの JavaScript 拡張機能 (つまり、列と行をドラッグ アンド ドロップする機能) を備えたグリッドのようなコントロールを持っています。列または行が新しい位置にドロップされると、AJAX メソッドが呼び出されてコントロール サーバー側に通知され、対応するサーバー側イベント ("OnColumnMoved" または "OnRowMoved") が発生します。
ASP.NET AJAX 呼び出しは、既定では、ページ全体を要求として送信します。このようにして、ページは完全なライフサイクルを通過し、viewstate が保持され、RaiseCallbackEvent メソッドが呼び出される前にコントロールの状態が復元されます。
ただし、AJAX 呼び出しはページを更新しないため、列または行が移動された後でも、ViewState はコントロールの元の状態を反映します。したがって、クライアント側のアクションが 2 回目に発生すると、AJAX 要求がサーバーに送られ、ページとコントロールが再度構築されて、最初の列または行が移動された後の状態ではなく、コントロールの最初の状態が反映されます。
この問題は、多くの意味合いにまで及びます。たとえば、グリッドに新しい項目を追加するクライアント側/AJAX アクションがあり、行がドラッグされた場合、グリッドはクライアント側よりも項目が 1 つ少ないサーバー側で構築されます。
最後に、私の特定の例について最も真剣に説明します。実際のデータ ソース オブジェクトは、ページの ViewState に格納されます。これは、操作されたデータのステートフル コピーを保持できるようにするための設計上の決定であり、多くの操作の後に DB にコミットするか、ユーザーがバックアウトした場合に破棄することができます。それを変えるのはとても難しい。
繰り返しますが、AJAX メソッドが起動された後、コールバックでページの ViewState を更新する方法が必要です。
asp.net - ビューステートをデコードする方法
asp.net ページのビューステートの内容を確認する必要があります。ビューステート デコーダーを探したところ、Fridz Onion の ViewState Decoderが見つかりましたが、ビューステートを取得するためにページの URL を要求されます。ビューステートはポストバック後に形成され、更新パネルでの操作の結果として生成されるため、URL を提供できません。ビューステート文字列をコピーして貼り付け、中身を確認する必要があります。ビューステートのコンテンツを表示するのに役立つツールまたは Web サイトはありますか?
asp.net - ポストバック時のビューステートの設定
ボタンが押されたときに ViewState 変数を設定しようとしていますが、ボタンを 2 回目にクリックしたときにのみ機能します。コードビハインドは次のとおりです。
足りないものはありますか?これはデザインファイルのフォーム部分で、POCと同じように非常に基本的です:
PS:サンプルは非常に単純化されtxtName.Text
ています。「ViewState の代わりに使用する」は正解ではありません。ViewState に情報が必要です。
asp.net - ViewState が使えないときはどうする?
リピーター内にユーザー コントロールを動的に構築するかなり複雑なページがあります。このリピーターは、初期化前の Init ページ イベント中にバインドする必要がありますViewState
。そうしないと、動的に作成されたユーザー コントロールの状態が保持されません。
これにより興味深いキャッチ 22 が作成されます。これは、リピーターをバインドするオブジェクトを最初のページの読み込み時に作成し、ユーザーが終了または保存するまでメモリに保持する必要があるためです。
このオブジェクトを保存するために使用することはできませViewState
んが、初期化中に使用できるため、セッションに保存することを余儀なくされました。
動作をエミュレートするために、非ポストバック中にセッション値を明示的に null にする必要があるため、これにも問題がありますViewState
。
このシナリオでは、管理を状態にするためのより良い方法が必要です。何か案は?
編集:の使用に関するいくつかの良い提案LoadViewState
がありますが、それを行ったときに状態が復元されないという問題がまだあります。
ここは、ページ構成が多少
ページ --> ユーザー コントロール --> リピーター --> 動的に作成された N 個のユーザー コントロール。
完全にカプセル化され、それが存在するページから独立するように設計されているため、オーバーライドさLoadViewState
れたものを親に入れました。UserControl
そこが問題なのか気になります。
asp.net - ViewState と制御順序の変更
今週は楽しい一週間でした (私の質問を振り返ると、共通のテーマが見えてきます)。
コレクションにバインドされたリピーターがあります。コレクション アイテムに対応する各リピーター アイテム ダイナミック コントロールは、削除リンクを含む各コントロールのヘッダーもレンダリングします。
削除リンクをクリックすると、該当するアイテムがコレクションから削除され、リピーターが再バインドされます。
私が直面している問題は、リピーター項目を変更すると、一部のユーザー コントロールの状態が失われることです。コレクション内のどこにあるかに関係なく、常に同じコントロールです。
バインドされたコレクションを変更することはできないのではないかと思っています.ViewStateが値を適切に復元するのを混乱させる可能性があります。
誰でも明確にできますか?他にどうすればこれを行うことができますか?
asp.net - ViewStateをページの外に移動しますか?
ページの読み込みを可能な限り軽減するよう努めています。ViewStateはページの100kまで膨らむことがあるので、完全に排除したいと思います。
他の人がViewStateをカスタムプロバイダーに移動するために使用したいくつかのテクニックを聞きたいです。
とはいえ、いくつかの注意点があります。
- 1時間あたり平均200万人のユニークな訪問者にサービスを提供しています。
- このため、データベースの読み取りはパフォーマンスの重大な問題であり、ViewStateをデータベースに保存したくありません。
- また、ロードバランサーの背後にいるため、どのソリューションも、ポストバックごとにマシン間でバウンスするユーザーと連携する必要があります。
アイデア?
asp.net - ASP.Net アプリケーションのビューステートが改ざんされているかどうかをどのように確認できますか?
セキュリティに関する議論の中で、私のチームの開発者が、viewstate が改ざんされているかどうかを確認する方法があるかどうか尋ねました。私は答えを知らなかったと言って恥ずかしいです。私は見つけ出すと彼に言いましたが、ここにいる誰かに最初に答える機会を与えると思いました. 自動検証があることは知っていますが、イベント検証が有効になっていない場合に手動で行う方法はありますか?
c# - ViewState エラーを適切に処理するにはどうすればよいですか?
さまざまなグリッドビューでいくつかの c# .net ページを実行しています。それらのいずれかを Web ブラウザーに長時間 (通常は一晩中) 放置した場合、ページ上の要素をクリックすると、次のエラーが表示されます。
問題の処理をどこから始めればよいかよくわかりません。ビューステートの有効期限が切れた場合にページをリセットしてもかまいませんが、エラーをスローすることは受け入れられません!