2009-06-15 9 views
2

最近、私はかなり簡単なものだと思った質問への回答を掲載しました。質問は変更が反映されるasp.netのページのライフサイクルに関する問題ですさて、私はあなたの提案をしたい最初のポストバック後に行われたので、私はResponse.Redirect不良シードまたはちょうど誤解されました

Response.Redirect(Request.RawUrl) 

を使うことを提案し、ほぼ瞬時に

(なぜ別のラウンドトリップを引き起こす)として、このために否決しまった、事は良い練習のこのタイプです、単に実用的な、または決して使用されるべきではない、少しの動機づけであなたの答えをバックアップしてください。私はそれを再考すべきか疑問に思う。

これはReponse.Redirectと、本質的には何も問題は、それが事態のようなもので必要とされていないだけで、ほとんどの場合には、ありません Dynamically Change User Control in ASP.Net

+1

私は以前の質問とこの質問にはあなたの答えがあると思います。リダイレクトが実際には必要ない場合は、R.Rを使用すべきではありません(リソースの考慮および誤解を招く意図による)。 Joelが提示するセッションベースのソリューション、またはRequestから直接引っ張っても、どちらも元の問題を手軽に解決できます。 (JSソリューションも動作しますが、ASP.NETはうまく動作しません) – annakata

答えて

3

オリジナルのポストです。ページの作成方法を、ライフサイクルではなくライフサイクルで処理することで変更できます。その後、別のポストバックは必要ありません。

+0

最初のステートメントはより強く言いたいと思います。リダイレクトに使用されていないResponse.Redirectには何か問題があります。私はこれが本当に間違っているほど、より優れたテクニックの場合だとは思わない。 – annakata

1

ASP.Netページのライフサイクルには、ステップインして設定する機会がたくさんあるため、Response.Redirectを使用してページを2回ロードする必要がないことがわかります。

一方、1つの引数だけでResponse.Redirectを使用するとThreadAbortExceptionを投げることができるので、2番目の引数をfalseに設定してオーバーロードResponse.Redirect(string url, bool endResponse)を使用することが最適です。これはASP.Net 1.0および1.1(hereを参照)には当てはまりますが、2.0については不明です。

0

これは偶然のプログラミングのようですが、ASP.netの多くはそれです。

1

別の解決方法は、AutoPostBack DropDownListを持つUpdatePanelを使用してユーザーコントロールを切り替えることです。ユーザーコントロールを切り替えるだけで、メインの送信ボタン(または他のイベント)がフォーム全体をポストバックすると、すべてのデータを処理することができます。

正しく行うと、UpdatePanelsはローカルページのViewStateを更新します。

関連する問題