2017-05-04 61 views
-3

生成的C#我有字符串URL如下 http://localhost:56856/s.aspx?&searchString=jacket&sortField=&pageNumber=2&pageSize=0&facetQuery=如何改變從字符串的URL查詢字符串值由系統

我需要查詢字符串值,例如從上面的URL改變,如果我找到的pageSize = 0比我需要改變其值pageNumber * 12。 像上面的url pagnumber是2,頁面大小是0,所以頁面大小應該是2 * 12 = 24。我用下面的QueryValues我得到這樣的URL = http://localhost:%%2f55%/s%aspx?&searchString=jacket&sortField=&pageNumber=2&pageSize=0&facetQuery=

可以請你建議我在哪裏,我錯了,我怎麼能這樣QueryValues轉換爲有效的URL代碼

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)); 
      } 

感謝

+3

而且......發生了什麼? –

+0

什麼是'webQuery.querystringreplace'? – ColinM

+0

您嘗試了什麼,遇到了什麼問題?就目前而言,這個問題看起來像是「我需要這樣做,請爲我做」這個問題,這是不適合的地方。 – JohnRW

回答

0

有一兩件事我注意到的是,你是不是查詢字符串之前分析它識別。我們可以通過在URL中定位IndexOf('?')來很容易地找到它,該URL描述了QueryString中的URL。您可能需要查看MSDN: HttpUtility.ParseQueryString Method文章中,我曾經當我回顧這個方法(我使用URL時,一般多采用primitve方法)

請注意,NameValueCollection查詢字符串可以將返回空的識別方法值。

我建議檢索您採取適當的應對措施,如設置字符串爲空或數字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)); 
     } 

} 
+0

我已經使用下面的代碼,使有效的URL和我的問題得到解決var uriBuilder = new UriBuilder(url.Substring(0,url.IndexOf(「?」))); uriBuilder.Query = QueryValues.ToString(); url = uriBuilder.ToString(); –