一个用于简化 URL 参数处理的小类
一篇关于描述一个简单的类,

引言
(有关最新更改,请参阅下面的“历史记录”部分。)
如果您在 ASP.NET 中处理 URL,您可能经常需要读取不同的 URL 参数。例如,您可以从您的 Page
类的 QueryString
集合(或者更准确地说,是从您的 Page
类的 Request
属性)中读取“name1
”参数的值。
private void Page_Load(
object sender,
System.EventArgs e )
{
string value1 = Request.QueryString["name1"];
// ... Further processing of the value1 variable ...
}
在我的项目中,我经常需要“写入”URL 参数的功能,例如,用于在页面上输出 URL 或重定向到带有适当参数的另一个页面。本文介绍了我编写的一个名为 QueryString
的类,以便让我的生活稍微轻松一些。
一些示例
在更详细地探讨 QueryString
类之前,先展示一些如何使用它的示例。
示例 1 - 修改属性值
创建一个 QueryString
对象,让它自动填充当前页面的参数。
private void Page_Load(
object sender,
System.EventArgs e )
{
// Let the object fill itself
// with the parameters of the current page.
QueryString qs = new QueryString();
// Read a parameter from the QueryString object.
string value1 = qs["name1"];
// Write a value into the QueryString object.
qs["name1"] = "This is a value";
// Redirect with the current content of the QueryString object.
// In this example, since the BeforeUrl property is not modified,
// it will redirect to the current page itself, but with the
// "name1" parameter set to the new value.
Response.Redirect( qs.All, true );
}
正如您所见,您可以通过使用 []
运算符将值赋给适当的参数名来简单地修改参数的值。All
属性返回存储在 QueryString
对象内的完整 URL,包括最新(可能已修改)的参数。
示例 2 - 删除参数
要从 QueryString
对象中删除特定参数,请调用 RemoveParameter
方法,并指定要删除的参数名称。
private void Page_Load(
object sender,
System.EventArgs e )
{
// Let the object fill itself
// with the parameters of the current page.
QueryString qs = new QueryString();
// Read a parameter from the QueryString object.
string value1 = qs["name1"];
// Now remove the parameter.
qs.RemoveParameter( "name1" );
// This has the same effect as RemoveParameter() method:
qs["name1"] = null;
// ... Further processing of the value1 variable ...
}
简述该类
该类最常见的用法已在上一节中描述。应该很容易使用,不是吗?尽管如此,这里还是对其最有用的成员进行一个(不完整的)概述。
构造函数
以下是存在的构造函数。
public QueryString()
- 空构造函数,如果存在,它会用当前页面的参数填充自身。public QueryString( System.Web.UI.Page currentPage )
- 使用给定页面的参数进行构造。public QueryString( string url )
- 使用给定 URL 的参数进行构造。public QueryString( Uri uri )
- 使用给定 URI 的参数进行构造。
从给定 URL 读取的方法
通过使用以下方法,您可以获得与构造函数类似的结果,但是在对象已经构造之后。
public void FromUrl( System.Web.UI.Page currentPage )
- 用给定页面的参数填充。public void FromUrl( string url )
- 用给定 URL 的参数填充。public void FromUrl( Uri uri )
- 用给定 URI 的参数填充。
杂项操作
使用以下方法进行进一步操作。
public bool HasParameter( string parameterName )
- 检查给定参数是否存在(即,非 null 且非空字符串)。public void RemoveParameter( string name )
- 从当前参数集合中删除一个参数。如果参数不存在,则不执行任何操作。public void RemoveAllParameters()
- 从当前参数集合中删除所有参数。
杂项属性
使用以下属性来访问各种值。
public string this [string index]
- 通过给定的参数名获取或设置参数值。如果参数不存在,get 方法返回string.Empty
(即不是null
)。public string BeforeUrl
- 获取或设置All
属性返回的 URL 的“基础”部分。例如,将其设置为“http://www.myserver.com/mypage.aspx”。public string All
- 获取当前存储在对象中的完整 URL。这是All
属性的值加上当前参数。例如,返回“http://www.myserver.com/mypage.aspx?name1=value1&name2=someOtherValue”。
结论
在这篇简短的文章中,我向您展示了一个简化 URL 参数值读取和写入的类。对我而言,这个类已经使用了大约两年,帮助我节省了大量的编码时间(好吧,至少是一点点……)。希望它对您也有用。
如有任何问题、意见和建议,请使用本文底部的评论区。
历史
- 2010-04-05:添加了新版本,增加了一些新方法(例如 HTTP 301 重定向,这有利于 SEO),并使用了 Fluent interface 的概念。
- 2005-01-06:修正了一些非常小的拼写错误。
- 2004-12-30:添加了 Chris Maunder 的修复和建议。
- 2004-12-14:创建了文章的第一个版本。