[ASP.NET] 使用 HttpUtility.ParseQueryString 剖析網址參數

摘要:[ASP.NET] 使用 HttpUtility.ParseQueryString 剖析網址參數

前言


  這篇來說明一下該如何分析含 QueryString 參數的網址後分別取得其 Key/Value,請參考以下範例 。

 

範例


  首先需要將 URL 轉換成 URI (統一資源識別源),使用 Uri 建構函式 (String) 即可,當轉換成 Uri 物件後,就能夠透過 Uri 類別的屬性及方法進行剖析、比較、組合等操作。


Uri uri = new Uri("http://localhost/test/test.aspx?id=1234567&seq=1&name=Arvin");

 

  接下來使用 HttpUtility 類別的 ParseQueryString 方法將 Uri.Query 屬性傳入即可將 Uri 剖析為 NameValueCollection 物件,NameValueCollection 是一種 Key/Value 型態的集合。


HttpUtility.ParseQueryString(uri.Query, System.Text.Encoding.UTF8);

 

  完整的操作方式如下


protected void Button1_Click(object sender, EventArgs e)
{
    NameValueCollection collection = GetUrlParams("http://localhost/text/test.aspx?id=1234567&seqno=1&name=Arvin");
    // 取得全部參數
    foreach (var key in collection.AllKeys)
    {
        Response.Write(string.Format("KeyAndValue: {0} / {1}<br>", key, collection[key]));
    }
    // 取得單一參數
    Response.Write(string.Format("KeyAndValue: {0} / {1}<br>", "id", collection.Get("id")));
}

/// <summary>
/// 剖析URL參數
/// </summary>
/// <param name="pURL"></param>
/// <returns></returns>
private NameValueCollection GetUrlParams(string pURL)
{
    Uri uri = new Uri(pURL);
    return HttpUtility.ParseQueryString(uri.Query, System.Text.Encoding.UTF8);
}

 

顯示結果


KeyAndValue: id / 1234567
KeyAndValue: seqno / 1
KeyAndValue: name / Arvin
KeyAndValue: id / 1234567

 

參考資料


Uri 類別

HttpUtility.ParseQueryString 方法

NameValueCollection 類別

 

 


以上文章敘述如有錯誤及觀念不正確,請不吝嗇指教
如有侵權內容也請您與我反應~謝謝您 :)