2012-01-16 3 views
0

これは古典的なASP 101の場合の謝罪ですが、このエラーを理解/追跡するためにASP Imが苦労して以来、ずっとずっと続いています。それを悪化させるのは、私がこのアプリケーションを継承しており、私は元の著者に尋ねることができません..フォームまたはセッションでのトラッキング・ダウン・エラー

私は入力チェックボックスと他の多くのフィールドを含むショッピングカートを持っています。フォームが処理され、送信されると、いくつかのjavascriptが実行され、すべてがOKであれば、別のページにリダイレクトされます。 (何もそこに珍しい)。 Firebugは、この時点で、チェックボックスの値がチェックされた状態によって異なることを示しています。

フォームが送信されると、session.Contents()コレクションを反復してサードパーティに送信される文字列が作成される別のページに移動します。 fiddlerを使用すると、checkBoxの名前がこの文字列にある間、値は常に 'on'です。

Googleを読むと、session.Contentsコレクションがセッションに配置されたすべてのパラメータであることがわかります/ 応用。プロジェクトディレクトリ内のすべてのファイルのgrepは、チェックボックスがセッションに追加されている場所では表示されません。

フォーム上にあるか、javascriptで使用されているか、または変数をセッションに追加する他の方法があるため、そこにcbがあります。 (名前のグレープは他のインスタンスを上げません)。

第2に、変数がセッション内にある場合、どのようにそれがそこにあっても、それは常に「オン」に設定されます。私は何とかそれがセッションに追加され、フォームが処理される前にOnに設定されていると仮定しています。しかしチェックボックスはデフォルトではチェックされていないので、混乱してしまいます!

誰でもこれを説明することができますし、どのように私がそれを追跡/修正することができるかを提案することもできます。 (明白な答えが正しい値とのセッションにそれを強制しようとすることですが、私はそれだけで私は再びこのような何かを満たす場合には、それを無視するのではなく、不正な動作される理由を知りたいのですが!

おかげ

+0

チェックボックスはASPで動作します。それがクリアされていない場合は、何が起こっているかを見るためにトレースを行う必要があります。私はコードを見ることなく、より具体的にすることはできません。フォームがクエリーストリングを通して値を渡している場合は、おそらくページがキャッシュされていますか? – Dee

+0

他の値が正しく渡されているので、キャッシュの問題はないと思います。 私はASPのデバッグでプライマーを見つけ出し、何が起きているのか見てみる必要があります。 – Matt

答えて

0

JavaScriptがチェックボックス状態priortを送信許可に変更していないことを既に確認したと仮定します。

フォームが送信されると、送信されるフィールドはRequest.Formコレクションに含まれます。チェックボックスはチェックされていません。それはRequest.Formコレクションの一部ではないため、送信時にチェックしたのと同じくらい多くのチェックボックスフィールドがRequest.Formコレクションにあります。彼らはすべてそれぞれの "価値"特性の価値を持っています。

これらをSession.Contentsコレクションに追加すると、セッションが終了するまで保持されます。 Session.Contentsコレクションを明示的にクリアすることはできませんが、異なる値で複数回フォームを送信すると、Session.Contentsコレクションにはcheckbox_name(checkbox_name、checkbox_value) 、checkbox_value)のペアをチェックします。

セッションから各フォームフィールドをクリアする関数を記述し、フォームの処理後、またはフォームを処理する前に(アプリケーションに合った方法で)呼び出すことができます。または、単にRequest.Formコレクションを使用します。

+0

今日これを試してみます。あなたが言っていることは、セッションに追加するコードのためにアプリケーションをGrepしたり、そこからアイテムを削除したりしても、ほとんど見つかりません。明らかにウェブページから削除されない限り、アイテムをクリアするものはありません。 私は後でバクになるでしょう。 ありがとう – Matt

関連する問題