個々のクエリ文字列パラメータをurlencodeしようとせずに、URLクエリ文字列全体をURLエンコードする方法はありますか?今、私は次のようなものでクエリ文字列を再構築する必要があります:
foreach (string x in Page.Request.QueryString.Keys)
{
sQueryString += x + "=" + Server.UrlEncode(Request.Params.Get(x)) + "&";
}
次の値を取得するだけです。
Page.Request.Url.Query
見る:
Uri baseUri = new Uri("http://www.contoso.com/catalog/shownew.htm?date=today&<a>=<b>");
string queryString = baseUri.Query;
queryString
パラメータはを返します?date=today&%3Ca%3E=%3Cb%3E
。
もう1つの編集-MSDNから:
Queryプロパティには、URIに含まれるクエリ情報が含まれます。クエリ情報は、疑問符(?)でパス情報と区切られ、URIの最後まで続きます。返されるクエリ情報には、先頭の疑問符が含まれます。
クエリ情報は、デフォルトでRFC2396に従ってエスケープされます。International Resource Identifiers(IRI)またはInternationalized Domain Name(IDN)の解析が有効になっている場合、RFC3986およびRFC3987に従ってクエリ情報がエスケープされます。
string.Formatを使用し、QueryStringの最後に余分な&がある場合を除いて、上記のアプローチが最適です。