2011-06-27 10 views
2

私はNameValueCollectionsを試してみましたが、それらはHttpContextをasp.net WebFormsでどのようにURLを操作しますか?

NameValueCollection nv = Request.QueryString; 

nv.Remove("ForeignLanguage"); 
nv.Add("ForeignLanguage", l.ID.ToString()); 
内のオブジェクトの数がそうであるように読み取り専用であるように見える

例えば

Url url = new Url("http://www.stackoverflow.com"); 

if(!url.Params.Contains("user")) 
    url.Params.Add("user", "1"); 

asp.net WebフォームでURLを操作するためのクラスが必要です

上記はコレクションを生成する読み取り専用例外

答えて

4

私はUriBuilderクラスを使用しますが、非常に便利なHttpUtility.ParseQueryString方法と併せて:

var uri = new UriBuilder("http://www.stackoverflow.com"); 
NameValueCollection parameters = HttpUtility.ParseQueryString(string.Empty); 
parameters.Add("user", "1"); 
uri.Query = parameters.ToString(); 
return uri.ToString(); 

ParseQueryStringメソッドに空の文字列を渡すとトリック - これはあなたのSystem.Web.HttpValueCollectionNameValueCollectionから派生した非publicクラスの(書き込み可能)のインスタンスを提供しますあなたがそのToStringメソッドを呼び出すと、(とりわけ)クエリーストリング形式でその内容を出します。また、現在のURLを操作することができ

var uri = new UriBuilder(Request.Url); 
NameValueCollection parameters = HttpUtility.ParseQueryString(uri.Query); 
// TODO Manipulate parameters... 
uri.Query = parameters.ToString(); 
return uri.ToString();