代码之家  ›  专栏  ›  技术社区  ›  schooner

url querystring-查找、替换、添加、更新值?

  •  14
  • schooner  · 技术社区  · 16 年前

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

    例如:mypage.aspx?开始日期=08/22/09&开始日期=09/22/09

    它不需要复制项目,而是需要用新值更新(如果它已经存在),或者添加(如果不存在)。

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

    如果可能的话,我们会更快地使用现有的逻辑,而不是重新创建一些东西,以便以半标准的方式快速解决这个问题,以便将来维护和重用。

    4 回复  |  直到 13 年前
        1
  •  27
  •   Colonel Panic    13 年前

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

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

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

        2
  •  0
  •   Traveling Tech Guy    16 年前

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

        3
  •  0
  •   b0x0rz    16 年前

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

    不更新当前查询字符串,只需每次将所有参数添加到基中即可。

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

    if querystring exists
      then update query string
    else
      add query string
    

    当你开始使用一个以上的变量时会变得疯狂。

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

        4
  •  0
  •   marc_s MisterSmith    16 年前

    这个 WCF REST Starter Kit 在ASP.NET上可用的还包括一个新的“httpquerystring”助手类,该类很可能包含在.NET 4.0时间框架中的基类库中。

    在这里可以看到一个关于如何使用这个实用程序类的极好的屏幕显示:

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

    马克

    推荐文章