問題タブ [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.

0 投票する
5 に答える
971 参照

asp.net - .net Viewstate が機能しなくなる可能性のある状況は何ですか?

次のコードを検討してください。

このコードは、アプリケーションの特定のページでは機能しません。Viewstate は Page ディレクティブでオフになっていません。何が起こっているのかわかりません。: \

ああ、私はちょうどそれを理解しました。気づいたら見てください。

.<

0 投票する
7 に答える
9756 参照

.net - ASP.NET をより詳細に制御するにはどうすればよいですか?

私は非常に単純な「マイクロ Web アプリケーション」を構築しようとしています。私は、バニラ ASP.NET 3.5 (つまり、MVC ではない) である C# in Depth サイトでホストしています。

フローは非常に単純です。

  • ユーザーがすべてのパラメーターを指定していない (またはそれらのいずれかが無効な) URL を使用してアプリに入った場合、ユーザー入力コントロールを表示したいだけです。(2つしかありません。)
  • ユーザーが必要なすべてのパラメーターを含む URL を使用してアプリに入った場合、結果入力コントロールを表示したい(パラメーターを変更できるようにするため)

これが私の自主的な要件です(設計と実装の混合):

  • 主に、ユーザーがページを簡単にブックマークできるように、投稿で POST ではなく GET を使用する必要があります。
  • 送信後に URL がばかげたものに見えて、余分な部分が追加されてしまうのは望ましくありません。メインの URL と実際のパラメータだけをお願いします。
  • 理想的には、JavaScript をまったく必要としないようにしたいと考えています。このアプリには正当な理由はありません。
  • レンダリング時にコントロールにアクセスし、値などを設定できるようにしたいです。特に、ASP.NET がこれを自動的に実行できない場合、渡されたパラメーター値にコントロールの既定値を設定できるようにしたいと考えています。私にとって(他の制限内で)。
  • すべてのパラメーターの検証を自分で行うことができて満足しており、サーバー側のイベントの方法はあまり必要ありません。ボタンなどにイベントを添付する代わりに、ページの読み込み時にすべてを設定するのは非常に簡単です。

これのほとんどは問題ありませんが、viewstateを完全に削除して残りの便利な機能を維持する方法は見つかりませんでした。このブログ投稿の投稿を使用して、ビューステートの実際のを取得することをなんとか回避できましたが、それでも最終的には URL のパラメーターになってしまい、見栄えが悪くなります。

ASP.NET フォームではなくプレーンな HTML フォーム (つまり、取り出しrunat="server") にすると、魔法のビューステートは得られませんが、プログラムでコントロールにアクセスできません。

ASP.NET の大部分を無視し、LINQ to XML を使用して XML ドキュメントを構築しIHttpHandler . ちょっとレベル低い気がするけど。

制約を緩和する (たとえば、POST を使用して余剰パラメーターを気にしない) か、ASP.NET MVC を使用することで問題を解決できることはわかっていますが、私の要件は本当に不合理ですか?

たぶん、ASP.NET はこの種のアプリにスケールダウンしないのでしょうか? ただし、非常に可能性の高い代替手段があります。私はただ愚かであり、私が見つけていない完全に簡単な方法があります。

何か考えはありますか?(強大な人がどのように倒されたかなどについてのキュー コメント。それで問題ありません。真実はまったく逆であるため、私が ASP.NET の専門家であると主張したことがないことを願っています...)

0 投票する
2 に答える
1531 参照

asp.net - ASP.NET 3.5 に切り替え、DropDownList は動的に追加された項目を記憶しません

データバインドされたいくつかの DropDownLists を使用するサイトがあります。また、従来の if (!IsPostBack) {list.Databind();} も実行しており、ビューステートに依存して、ポストバック中にリストがいっぱいになるようにしていました。最近、サイトを ASP.NET 3.5 に変換しましたが、ポストバック中にリストが空であることに気付きました (ViewState が無効になっているかのように)。私は明示的に何も無効にしませんでしたが、ビューステートに依存するコントロールで同様の変更や動作を見た人がいるかどうか疑問に思っています。

ありがとう!

ジェームズ

0 投票する
3 に答える
3697 参照

asp.net - ViewState を無効にして ASP.NET DropDownList コントロールの 'SelectedIndexChanged' をシミュレートする最良の方法

SelectedIndexChangedのときに機能しないという問題を回避しようとする多くの投稿を見つけましたEnableViewState='false'

なぜ制御状態が機能しないのか少し混乱していますが、誰かがそれを説明できればそれはボーナスポイントです.

「ハック」のいくつかはかなり「ハッキー」です。ドロップダウン値に対応するページ自体のビューステートに値を設定し、その値をポストバック中に受け取った値と比較するようなものです。

私は最高の最もエレガントなソリューションを探しています(良いものがあれば)。

これが巧妙な派生コントロールなのか、それとももっと巧妙なものなのかはわかりませんが、解決策が「信頼できる」ほど一般的であり、問​​題の特定のページでのみ機能するハックだけではないことを確認したいと思います(これは一般的なものです)そのようなハック!)。

0 投票する
4 に答える
2762 参照

asp.net - 後で再利用するために ViewState を保持する方法は?

ViewState 情報をセッションなどに保存して、ページから離れたときに何らかの方法で永続化することはできますか? その後、そのページに戻ったときにビュー ステートをリロードすると、行った選択が保持されます。

バックグラウンド

データを選択したり、フィルタリングや並べ替えを行ったりできるレポート ページと、レポート ページから選択したデータをさまざまな方法で表示できるグラフ ページの 2 つのページがあります。

ユーザーがさまざまなプレゼンテーションをテストした場合、戻るボタンを使用するだけで、ユーザーがレポート ページに戻るまでにかなりの数のクリックが必要になる可能性があります。レポートページへの直リンクをお願いします。

  • QueryString を使用してコントロールの状態を保存することはできません。
  • アプリケーション全体の ViewState ストレージをカスタマイズできません。
0 投票する
2 に答える
17474 参照

asp.net - DropDownList OnSelectedIndexChange を ViewState なしで 0 番目のインデックスに変更

私は記事TRULLY Understanding ViewState (すばらしい記事btw)に従いましたが、ドロップダウンリストの作成はうまく機能しています。OnSelectedIndexChange イベントもセットアップしましたが、これはほぼ同じように発生します。

私が見つけた問題は、0 番目のインデックスを選択したときに SelectedIndexChanged イベントが発生しないことです。ただし、それ以外の場合はすべて行います。

ここにいくつかのコードがあります:


Page_Load メソッドで何らかのチェックを行うことができると思います。

または、私ができるたびにこのデータを再バインドしている OnInit() メソッドでセットアップできるものはありますか?

私のカスタム EventHander は、このコントロールが存在する親ページによってキャッチされるイベントを発生させ、親が新しく選択された値を使用して何らかのアクションを実行できるようにします。そして、これは現在、選択したインデックスが 0 を超えるすべてのケースで機能しています。

このコントロールに、最近選択されたインデックスを含むプロパティを作成します。この場合、親ページは Page_Load ごとにこのプロパティ値に対してアクションを実行できます... わかりません。

提案を受け付けます。または、この SelectedIndexChanged イベントをその 0 番目のインデックス選択に対して強制的に発生させる方法。

0 投票する
3 に答える
2335 参照

c# - C#asp.netはビューステートからSQLクエリを動的に構築します

私の C# asp.net webform には、検索の一部として「使用できる」約 20 の要素を持つ検索ページがあります。後でさらに追加されます。

私が行ったことは、テキストボックスとドロップダウンリストボックスを拡張して、いくつかの変数を含めることです:

fieldname: Tablename.columnname dbtype: DbType.Int32 Joinparam: LEFT Join on otherTable ON xy = ab

これらはすべてビューステートに保存され、再度読み込まれます。これを行う理由は、すべてのコントロールを反復処理して、自分のタイプのすべてのコントロールを引き出すことができるようにするためです。次に、それらを検証して、入力があり、正しい型であることを確認できます。その場合、それらをデータベース アクセス レイヤーに渡し、コードで動的に SQL ステートメントを生成することができます。

これから SELECT ステートメント以外は何も発生させません。選択して返されたフィールドは変更できず、db パラメータを使用して SQL インジェクションを回避しようとしています。

私の心配は、検索条件で使用されるテーブルとフィールド名、および必要な JOINS をすべてビューステートに配置することです。これは本当に悪い考えですか?

DB にこの情報を保持するテーブルにいくつかの int インデックスを作成するだけでこれを曖昧にすることができますが、これはまだビューステートに入れる必要があり、理解するための追加のレイヤーがあることを意味します。

私がこのアプローチを採用した理由は、ステートメントを作成するために DB レイヤーに大量の IF ステートメントを配置する必要がなかったからです。それは地獄のように醜く、維持するのは苦痛です。

これに関するすべてのアドバイスに感謝します。

ジョン

編集

アドバイスをありがとう。ありがたいことに、このアプリは内部のみのものであるため、被害は限定的です。しかし、私はこの手法を二度と使用することはなく、代わりに検索テンプレートのアイデアに取り組みます.

乾杯 :)

0 投票する
4 に答える
1645 参照

c# - イベント ハンドラー メソッドがランダムに動作しなくなるのはなぜですか?

イベント ハンドラーがある日は機能し、コードを変更しなければ次の日には機能しなくなるのはなぜですか?

私は何度も問題に遭遇しましたが、常に遊んでいる必要があり、どういうわけかイベントハンドラーが魔法のように再び機能します。以下は、これが今日私に再び起こった例です。この種の問題をすばやく解決する方法を知っていますか?

このメソッドにブレークポイントを設定しましたが、ヒットすることはありません。

ソリューションのクリーニング、すべての再構築などを試みました。ここに洞察はありますか?

編集:

はい、AutoEventWireup は true に設定されています。その他のシステム/開発環境の変更はありません。.NET 3.5 を使用しています。

0 投票する
7 に答える
7394 参照

javascript - ScriptResource.axd のビューステートが無効ですか?

スクリプト リソース ファイルと Web リソース ファイルによって、アプリケーションで断続的なエラーが発生します。問題の原因を追跡しようとしましたが、役に立ちませんでした。渡された「d」パラメーターが破損していることに気付きました。このパラメーターが破損した原因を突き止めることはできません。私のアプリケーションの JavaScript コードが、「d」パラメーター用に生成されたハッシュ コードと何らかの形で絡み合っていることに気付きました。

0 投票する
4 に答える
2115 参照

asp.net - ビューステートの代わりに使用するasp.net

現在、データのページング中に現在のページ番号を保存するためだけにビューステートを使用しています。ページをめくることができるデータを持つページに 3 つのコントロールがあります。

これまでのところ、ページ番号を追跡する最も簡単な方法はビューステートですが、非常に大きくなり、その理由がわかりません。

そのため、ページ番号を追跡するために別のものを使用したいと思いますが、何を使用すればよいかわかりません。非表示のフォーム フィールドとして埋め込む必要がありますか? クエリ文字列で渡しますか? 他の良いオプションは?