一个用于简化 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:创建了文章的第一个版本。




