You can’t modify the QueryString directly as it is readonly. You will need to get the values, modify them, then put them back together. Try this:
var nameValues = HttpUtility.ParseQueryString(Request.QueryString.ToString());
nameValues.Set("page", "2");
string url = Request.Url.AbsolutePath;
string updatedQueryString = "?" + nameValues.ToString();
Response.Redirect(url + updatedQueryString);
The ParseQueryString
method returns a NameValueCollection
(actually it really returns a HttpValueCollection
which encodes the results, as I mention in an answer to another question). You can then use the Set
method to update a value. You can also use the Add
method to add a new one, or Remove
to remove a value. Finally, calling ToString()
on the name NameValueCollection
returns the name value pairs in a name1=value1&name2=value2
querystring ready format. Once you have that append it to the URL and redirect.
Alternately, you can add a new key, or modify an existing one, using the indexer:
nameValues["temp"] = "hello!"; // add "temp" if it didn't exist
nameValues["temp"] = "hello, world!"; // overwrite "temp"
nameValues.Remove("temp"); // can't remove via indexer
You may need to add a using System.Collections.Specialized;
to make use of the NameValueCollection
class.