一个有用的 UrlBuilder 类






4.70/5 (36投票s)
2005 年 7 月 20 日
3分钟阅读

163272

1901
一种生成和操作 URL 的简单方法。
引言
作为 ASP.NET 开发者,构建 URL 是一个经常要做的事情。.NET Framework 慷慨地提供了许多类来帮助我们简化这个问题,但经过我一番搜索,我发现框架中缺少的一个功能是轻松处理查询字符串参数的方法。我四处寻找了一下,发现了一些由不同人编写的解决方案,但它们都没有基于框架中已有的任何东西。框架提供了非常有用的 System.UriBuilder
类,但除了能够返回一个包含 URI 查询部分的字符串之外,它没有内置的方法来处理查询字符串参数。虽然这本身并没有什么用,但它确实帮助我们创建了一个派生类,扩展了 UriBuilder
中的功能。输入 UrlBuilder
。虽然考虑到现代命名约定,UriBuilder
是一个更准确的名称,但 UrlBuilder
在语义上是等价的,更重要的是,它不是框架中已有的任何东西的重复名称。
如果读者希望深入研究代码以了解其内部工作原理,可以在下载中找到,供您阅读,并且应该很容易理解它是如何组合在一起的。我在这里尝试做的只是通过一些示例代码来简要解释如何使用 UrlBuilder
类,这些示例代码希望能够概述和突出显示该类的显着特征。所以,事不宜迟,让我们深入研究一下。
UrlBuilder
类可以通过多种方式实例化,但为简单起见,让我们假设用户希望使用字符串作为此 UrlBuilder
实例的初始化程序。
UrlBuilder builder = new
UrlBuilder(“http://www.codeproject.com/index.asp?cat=4”);
该类中提供的其余构造函数重载与基类 UriBuilder
的构造函数重载完全相同,但有一个例外,即它接受一个 System.Web.UI.Page
对象。当用户希望仅重定向到具有不同查询字符串参数的同一页面时,这非常有用。该对象也可以使用 System.Uri
对象进行初始化。实例化后,我们可以操作 URI 的任何部分(请参阅 System.Uri
文档)。
builder.Host = “www.gibbons.co.za”;
builder.Path = “archive/2005”;
有趣的是,正斜杠“/”在 Path 字符串的开头是可选的。无论哪种方式,UriBuilder
类都将返回一个格式正确的 URI。UriBuilder
类没有提供仅设置 URI 页面名称部分的方法,因此我添加了一个名为 PageName
的新属性,它允许您仅设置所需页面的名称。
builder.PageName = “06.aspx”;
到目前为止,除了 PageName
属性之外,这没有什么新东西;所有这些都可以通过 UriBuilder
类完成。当我们尝试操作查询字符串参数时,UrlBuilder
类的真正用处就显现出来了,如下所示
builder.QueryString[“cat”] = 12345;
builder.QueryString[“a”] = “A”;
builder.QueryString[“b”] = “B”;
如果查询字符串已经包含构造函数传递给构造函数的 URI 中包含的参数(在本例中为“cat”),则该参数的值将被新值覆盖。如果该参数尚不存在,则将其附加到生成的查询字符串。此外,用于存储查询字符串对的内部 StringDictionary
对象的所有属性和方法都可供用户使用。例如,您可以删除其中一个参数
builder.QueryString.Remove(“cat”);
或者检查集合是否包含给定的键或值
builder.QueryString.ContainsKey(“cat”);
builder.QueryString.ContainsValue(“12345”);
最后,有两种使用 URI 的方式。首先,通过调用
string uri = builder.ToString();
或者简单地通过调用
builder.Navigate();
这将执行重定向到当前包含在该对象中的 URI。
祝您编码愉快。