Introduction
(For the latest changes, please see the History section below.)
If you are working with URLs from within ASP.NET, you probably often need to read different URL parameters. E.g., you could read the value of the "name1
" parameter out of the QueryString
collection of your Page
class (or, to be more precise, from the Request
property of your Page
class):
private void Page_Load(
object sender,
System.EventArgs e )
{
string value1 = Request.QueryString["name1"];
}
In my projects, I often need the ability to write URL parameters, e.g., for outputting a URL on a page or for redirecting to another page with the appropriate parameters. This article introduces a class QueryString
which I wrote in order to simplify my life a little bit.
Some Examples
Before examining the QueryString
class in more detail, first some examples of how to use it are shown.
Example 1 - Manipulate an attribute value
Create a QueryString
and simply let itself fill with the parameters of the current page:
private void Page_Load(
object sender,
System.EventArgs e )
{
QueryString qs = new QueryString();
string value1 = qs["name1"];
qs["name1"] = "This is a value";
Response.Redirect( qs.All, true );
}
As you can see, you can simply modify a parameter's value by assigning it to the appropriate parameter name by using the []
operator. The All
property returns the complete URL that is stored inside the QueryString
object including the latest (possibly modified) parameters.
Example 2 - Removing parameters
To remove a certain parameter from the QueryString
object, call the RemoveParameter
method, specifying the name of the parameter to remove:
private void Page_Load(
object sender,
System.EventArgs e )
{
QueryString qs = new QueryString();
string value1 = qs["name1"];
qs.RemoveParameter( "name1" );
qs["name1"] = null;
}
The Class in Brief
The most common use of the class was already described in the previous section. It should be simple to use, n'est pas? Nevertheless, here is an (incomplete) overview of the most usable members:
Constructors
The following constructors exists.
public QueryString()
- Empty constructor, fills itself with the parameters of the current page (if any)
public QueryString( System.Web.UI.Page currentPage )
- Constructs with the parameters of the given page
public QueryString( string url )
- Constructs with the parameters from the given URL
public QueryString( Uri uri )
- Constructs with the parameters from the given URI
Methods for reading from a given URL
By using the following methods, you can achieve similar results as with the constructors, but after the object is already constructed.
public void FromUrl( System.Web.UI.Page currentPage )
- Fills with the parameters of the given page
public void FromUrl( string url )
- Fills with the parameters from the given URL
public void FromUrl( Uri uri )
- Fills with the parameters from the given URI
Miscellaneous operations
Use the following methods for further operations.
public bool HasParameter( string parameterName )
- Check whether a given parameter is present (i.e. is non-null and non-empty-string)
public void RemoveParameter( string name )
- Removes a parameter from the current parameter collection. Does nothing if the parameter is not present
public void RemoveAllParameters()
- Removes all parameters from the current parameter collection
Miscellaneous properties
Use the following properties for accessing various values.
public string this [string index]
- Gets or sets a parameter value by the given parameter name. If the parameter does not exists, get returns string.Empty
(i.e. not null
).
public string BeforeUrl
- Gets or sets the the "base" part of the URL returned by the All
property. E.g. set this to "http://www.myserver.com/mypage.aspx"
public string All
- Gets the complete URL that is currently stored inside the object. This is the value of the All
property plus the current parameters. E.g. returns "http://www.myserver.com/mypage.aspx?name1=value1&name2=someOtherValue".
Conclusion
In this small article, I've shown you a class that simplifies the reading and writing of URL parameter values. For me, this class is around about approximately two years and helped me save a lot of coding time (well, at least a bit...). Hopefully it is useful for you, too.
For questions, comments and remarks, please use the commenting section at the bottom of this article.
History
- 2010-04-05: Added new version that adds several new methods (like a HTTP 301 redirect, which is good for SEO) and makes use of the concept of a Fluent interface
- 2005-01-06: Corrected some very small spelling errors
- 2004-12-30: Added fix and suggestion from Chris Maunder
- 2004-12-14: Created first version of article