0

クエリ文字列の値に基づいていくつかのアクションを実行しているページがあります。ただし、クエリ文字列に「&」文字が含まれていると、これが壊れることに最近気付きました。

親ページの「&」文字を変換するコードを書くことができることは承知していますが、これを行うためのより良い方法があると信じなければなりません。

以下に例を示します: クエリ文字列:運動科学 & スポーツ研究 これは「運動科学」のみを返します

文字列を取得するために必要なコードは次のとおりです。

string selectedDept = Request.QueryString [ "dept" ];

ページが直接リンクされている場合があるため、URL を暗号化しないことをお勧めします。

4

5 に答える 5

5

暗号化する必要はありません。URL を生成する前に文字列をエンコードする必要があります。

MVC を使用している場合は、次を使用できます。

var url = "dept=" + Url.Encode(strDept);

それ以外の場合は、次も使用できます。

var url = "dept=" + HttpUtility.UrlEncode(strDept);

更新

残念ながら、これは見苦しい URL を生成します。

dept=Exercise%20Science%20%26%20Sports%20Studies
于 2012-10-22T13:01:19.083 に答える
1

アンパサンド(&)文字は、要求パラメーターを区切るように定義されているため、そのようなパラメーター内にエンコードする以外の方法はありません。

パラメータを暗号化するだけで、暗号化する必要はありません。この場合の一般的なエンコーディングは、いわゆるURLエンコーディングです。このエンコーディングの良いところは、通常の文字と数字がそのままであるということです。特殊文字のみがパーセント記号シーケンスでエンコードされます。

于 2012-10-22T12:59:44.840 に答える
1

はい、&文字はクエリ文字列を分割します。パラメータを区切るメタキャラクタとして使用されます。&クエリ パラメータに文字を含める必要がある場合は、文字を にエンコードする必要があります%26。ASP.Net では、ページ スコープ内HttpUtility.UrlEncodeのオブジェクトで呼び出されるメソッドを使用してこれを行います。Server

于 2012-10-22T13:01:50.190 に答える
0

次のようにパラメータをエンコードする必要があります。HttpUtility.UrlEncode(myUrl);

于 2012-10-22T13:00:04.780 に答える
0

アンパサンドは、パラメーターを区切るために使用されます。

パラメータを URL エンコードする必要があります。それらは Request.QueryString で自動的にデコードされます。

于 2012-10-22T13:00:24.763 に答える