[英]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.