3

ページのクエリ文字列を取り除き、それ自体にリダイレクトする方法を探していますが、何らかの方法でクエリ文字列データを保持します。例:http://www.test.de/somepage.aspx?id=abcにリダイレクトする必要がありhttp://www.test.de/somepage.aspxます。それでも、リダイレクト後、最初に渡されたパラメーターを取得できるようにしたいと考えています。http://www.test.de/somepage.aspx?id=abcそして、ブラウザの履歴に残したくありません。

私がこれまでに試したこと:

  • Response.Redirect(): ブラウザーの履歴を作成せずに適切なリダイレクトを行いますが、パラメーターを保持できません。

  • Server.Transfer: パラメータは保持されますが、ブラウザの URL は変更されません。

  • オンザフライでクライアント フォームを作成し、送信しますonload

現在考えられる唯一のことは、パラメーターをセッションに保存し、リダイレクトしてから、そこから取得することです。しかし、おそらくまだ別の解決策がありますか?

4

2 に答える 2

2

ピートが述べたように、クエリ文字列パラメーターをセッションに保存してから、Response.Redirect を呼び出して 2 番目のページにリダイレクトできます。

Session["id"] = Request["id"];
Session["param2"] = Request["param2"];
Session["param3"] = Request["param3"];
....
Response.Redirect(sameurl);

ページの 2 回目の読み込みで、クエリ文字列の値がなくなっているかどうかを確認します。そうであれば、クエリ文字列から値を読み取る代わりに、セッションから値を読み取ります。

id = Session["id"];
param2 = Session["param2"];
param3 = Session["param3"];
...
于 2010-08-19T13:31:50.543 に答える
0

なぜこれを行う必要があるのか​​ を理解することなく、最善の策はパラメーターをセッション状態に保存することです。ただし、信頼性の低いアプリケーションにつながるため、セッション状態は最小限に抑える必要があります。たとえば、ユーザーがブックマークを保存したり、セッションがタイムアウトした後に [更新] を押したりするとどうなりますか? これらの理由から、私はこのアプローチに反対することをお勧めします。

URL 書き換えを使用して、必要なパラメーターをより見やすくすることを検討できます。たとえば、次のようになります。http://www.test.de/somepage/abc

于 2010-08-19T13:01:31.680 に答える