私はURLを持っています:
http://www.abc.com?refurl=/english/info/test.aspx?form=1&h=test&s=AB
使用する場合
Request.QueryString["refurl"
しかし、私に与えます
/english/info/test.aspx?form=1
代わりに完全なURLが必要です
/english/info/test.aspx?form=1&h=test&s=AB
問題を修正します。問題は、refurl
エンコードせずに完全な URL をパラメーターとして配置することです。
したがって、その URL 文字列を作成する場所では、UrlEncode()
関数を使用します。
"http://www.abc.com?refurl=" + Server.UrlEncode(ReturnUrlParam)
どこ
ReturnUrlParam="/english/info/test.aspx?form=1&h=test&s=AB";
その特定のケースでは、QueryString を使用しないでください (クエリ文字列には 3 つのパラメーターが含まれているため)、 代わりにUri
クラスを使用Uri.Query
すると、必要な結果が得られます。
Uri uri = new Uri(@"http://www.abc.com?refurl=/english/info/test.aspx?form=1&h=test&s=AB");
string query = uri.Query;
これはあなたに与えるでしょう:
?refurl=/english/info/test.aspx?form=1&h=test&s=AB
後で削除?refurl=
して、目的の出力を得ることができます。
特定の要件に対するフレームワークに直接的な方法はないと確信しています。それをコードに実装し、文字列操作でも実装する必要があります。
少し前に似たような状況がありました。refurl 値をエンコードすることで解決しました。現在、私の URL は次のようになっています: http://www.abc.com?refurl=adsf45a4sdf8sf18as4f6as4fd
私は2つの方法を作成しました:
public string encode(string);
public string decode(string);
リダイレクトする前、またはリンクがある場所では、リンクとそれを読んでいる場所を単純にエンコードし、使用する前にデコードします。
Response.redirect(String.Format("http://www.abc.com?refurl={0}", encode(/english/info/test.aspx?form=1&h=test&s=AB));
そして、refurl を使用しているページで:
$refUrl = Request.QueryString["refurl"];
$refUrl = decode($refUrl);
EDIT:私が実際に拡張メソッドとして持っているエンコード/デコードメソッド、そしてすべての文字列に対してstring.encode()
or string.decode()
.
を に置き換える必要があり&
ます&
。