- - PR -
Request.QueryStringについて C#
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-06-30 15:14
こんにちは。
画面遷移時にどのボタンが押下されたかをボタンイベントより先のPage_Load内で 判断する為、ボタンをHTMLコントロールで配置し、Javascriptで actionにQueryStringを指定しています。 これをサーバーサイド処理の最後(ボタンイベントの最後)で クリアしたいのですが、「指定されたCollectionは読み取り専用です」という エラーが発生してQueryStringがクリアできず困っています。 どなたかご教示下さい、宜しくお願いします。 |
|
投稿日時: 2008-06-30 15:29
QueryStringをクリアしてどうしたいんでしょう。
たとえクリアできたとしても、ブラウザからはQueryStringが付いた状態でリクエストがあがっています。 ブラウザのほうにQueryStringを消してくれ、なんていってやることはWebの仕組みからできませんが。。。 #まぁ、だから変更できないよう読み取り専用にもしてるんでしょうが。 まずはブラウザとサーバの処理の関係をよく考えてみたほうがいいかと思います。 |
|
投稿日時: 2008-06-30 15:46
自分で試す時間がないのでだめだったらすみませんが、
・PageにHiddenFieldを置いておく ・ボタンを押したときに、JavaScriptでHiddenFieldに値を仕込む(その後、ポストバック) ・Page_Loadで、HiddenFieldに仕込んだ値を使う でどうでしょう? |
|
投稿日時: 2008-06-30 16:23
ああ、単にどのボタンが押されたかを知りたいだけなら、Request.Formの中身を
細かくチェックすれば普通にボタンを使ってても確認できるはずですよ。 たしかボタンに表示している文字列がFormの中にふくまれるんじゃなかったかな。 |
|
投稿日時: 2008-06-30 16:27
どっとねっとふぁんさん、rainさん回答ありがとうございます!
◆どっとねっとふぁんさん ポストバック時に画面の値がクリアされるのと同じように てっきり前回のクエリーストリングもクリアされていると思っていました。 が、よく考えたらラウンドトリップして帰ってきてブラウザーのレンダリングが 完了してないうちにクリアしようとするのがそもそもおかしいですね。 ボケてました・・・orz ◆rainさん 今のやり方がダメならご指摘と同じ内容で対応しようと考えていました。 コメントありがとう御座いました。 |
|
投稿日時: 2008-06-30 16:38
記述のミスかもしれないけど、なんか細かいとこが間違ってるような。。。
> ポストバック時に画面の値がクリアされるのと同じように 標準のコントロールやHTMLサーバコントロールではポストバックしたときにも ViewStateで値を保持するので、クリアされることはありません。 > よく考えたらラウンドトリップして帰ってきてブラウザーのレンダリングが > 完了してないうちに ボタンのイベント処理をしている間だったら、まだサーバ上で処理している間ですね。 ブラウザに帰ってきてもないし、レンダリングなんてまだまだはじまっていないはず。。。 |
|
投稿日時: 2008-06-30 18:00
その通りです。
すみません、疑わしい記述のしかたをしてしまって。 ご指摘ありがとう御座います。 |
1