65.9K
CodeProject 正在变化。 阅读更多。
Home

一个用于简化 URL 参数处理的小类

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.77/5 (41投票s)

2004年12月14日

CPOL

3分钟阅读

viewsIcon

173382

downloadIcon

893

一篇关于描述一个简单的类,该类使处理 URL 参数变得更加容易的文章。

An URL inside the Microsoft Internet Explorer Address bar

引言

(有关最新更改,请参阅下面的“历史记录”部分。)

如果您在 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:创建了文章的第一个版本。
© . All rights reserved.