繁体   English   中英

如何从系统生成的c#中的字符串url更改查询字符串值

[英]How to change the query string value from string url in c# generated by system

我有如下字符串 URL http://localhost:56856/s.aspx?&searchString=jacket&sortField=&pageNumber=2&pageSize=0&facetQuery=

我需要从上面的 url 更改查询字符串值,例如,如果我发现 pageSize=0 而不是我需要更改其值 pageNumber*12。 就像上面的 url 一样,pagnumber 是 2,页面大小是 0,所以页面大小应该是 2* 12=24。 我使用了以下代码

string url=http://localhost:56856/s.aspx?&searchString=jacket&sortField=&pageNumber=2&pageSize=0&facetQuery=
    var QueryValues = HttpUtility.ParseQueryString(url);
                string pageno = QueryValues.Get("pageNumber");
                string pagesize = QueryValues.Get("pageSize");
                if (pagesize == "0")
                {
                    QueryValues.Set("pageSize", Convert.ToString(Convert.ToInt32(pageno) * 12));
            } 

在 QueryValues 我得到这样的 url = http://localhost:%%2f55%/s%aspx?&searchString=jacket&sortField=&pageNumber=2&pageSize=0&facetQuery=

你能告诉我我哪里错了,我怎样才能把这个 QueryValues 转换成有效的 url?

谢谢

我注意到的一件事是,您没有在解析查询字符串之前确定它是什么。 我们可以通过在从 QueryString 描述 URL 的 URL 中定位IndexOf('?')来轻松找到它。 您可能想查看MSDN:HttpUtility.ParseQueryString Method文章,我在查看此方法时使用了他们的识别方法(我通常在处理 URL 时使用更原始的方法)

请注意, NameValueCollection QueryString 可以包含并将返回值。

我建议在检索这些值时采取适当的对策,例如将字符串设置为空或将数字设置为 0。我进一步建议您在检索时执行这些操作,而不是使用复合的“Convert.To\\”

 string url = @"http://localhost:56856/s.aspx?&searchString=jacket&sortField=&pageNumber=2&pageSize=0&facetQuery=";

 #region ===== Added: Identify and split =====
 int iqs = url.IndexOf('?');
 if iqs< 0) {
      // Cannot process, NO query string present
      // Corrective Action?
 } else {
      string urlQS= (iqs < url.Length - 1) ? currurl.Substring(iqs + 1) : String.Empty;
 #endregion ===================================

      var QueryValues = HttpUtility.ParseQueryString(urlQS); // changed from (url)

      string pageno = QueryValues.Get("pageNumber"); // catch null return ""
      string pagesize = QueryValues.Get("pageSize"); // int, catch null return 0

      if (pagesize == "0") {
           QueryValues.Set( "pageSize", Convert.ToString( Convert.ToInt32(pageno) * 12 ) );
      } 

 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM