1

私は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
4

4 に答える 4

3

問題を修正します。問題は、refurlエンコードせずに完全な URL をパラメーターとして配置することです。

したがって、その URL 文字列を作成する場所では、UrlEncode()関数を使用します。

"http://www.abc.com?refurl=" + Server.UrlEncode(ReturnUrlParam)

どこ
ReturnUrlParam="/english/info/test.aspx?form=1&h=test&s=AB";

于 2013-02-11T07:47:14.227 に答える
1

その特定のケースでは、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=して、目的の出力を得ることができます。

特定の要件に対するフレームワークに直接的な方法はないと確信しています。それをコードに実装し、文字列操作でも実装する必要があります。

于 2013-02-11T07:35:37.990 に答える
1

少し前に似たような状況がありました。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().

于 2013-02-11T07:39:15.557 に答える
0

を に置き換える必要があり&ます&

于 2013-02-11T07:35:29.113 に答える