URL Querystring - 查找,替换,添加,更新值?

时间:2009-07-22 08:54:13

标签: c# url query-string

我们从另一家公司继承了一些C#代码作为项目的一部分,该公司执行URL重定向,根据需要修改现有查询字符串,更改项目值,添加新参数等。但问题是代码充其量只是错误,最终会复制查询字符串中的项目而不是正确更新它们。该代码适用于第一次通过,但在其他调用时,重复问题变得明显。

Ex:MyPage.aspx?startdate = 08/22/09& startdate = 09/22/09

如果项目已经存在,则需要使用新值进行更新,而不是复制项目,如果已​​经存在,则需要添加新项目。

是否有一个C#类或一组函数来处理查询字符串,允许一种简单的方法来访问和更新/添加解决这些问题的参数,而不是现在似乎在使用代码的盲添加方法?这需要能够处理可能存在或可能不存在的多个参数,并在后续调用中添加和更新。

我们会尽快使用现有逻辑,而不是在可能的情况下重新创建一些东西,以便以半标准方式快速解决,以便将来可维护性和重用。

4 个答案:

答案 0 :(得分:27)

是的我建议使用HttpUtility.ParseQueryString()

将查询字符串转换为集合

然后,您可以在从此集合重新创建查询字符串之前直接在集合中查找/添加/更新/替换值。

这样可以更容易发现重复项。

答案 1 :(得分:0)

您可以通过Request.QueryString集合访问和操作Querystring的所有值。这是一个link

答案 2 :(得分:0)

这似乎是一个基本的设计问题。

而不是更新当前查询字符串,我们应该做的只是每次都将所有参数添加到基础。

当然,你可以更新它,但是(伪代码)

if querystring exists
  then update query string
else
  add query string
当你开始使用多于一个变量时,

会变得疯狂。

重新设计将是最好的,努力允许。

答案 3 :(得分:0)

ASP.NET上提供的WCF REST Starter Kit还包括一个新的“HttpQueryString”辅助类,它很可能会包含在.NET 4.0时间框架中的基类库中。

在此处观看有关如何使用此实用程序类的优秀截屏视频:

http://channel9.msdn.com/shows/Endpoint/endpointtv-Screencast-HttpClient-Query-String-and-Form-Input-Management/

马克