2017-02-28 72 views
1

我在Intranet應用程序中有一個頁面,其中有時會附加一個變量,有時候不會。舉例來說,在我的分頁代碼,我有這樣的:在asp.net中處理可選參數

MenuItem itemMessage = NavMenu.FindItem("First"); 
itemMessage.NavigateUrl = Request.CurrentExecutionFilePath + "?page=1&sid=6"; 

和其他部分我有這樣的:

MenuItem itemMessage = NavMenu.FindItem("First"); 
itemMessage.NavigateUrl = Request.CurrentExecutionFilePath + "?page=1"; 

有時sid被傳遞到頁面,有時它不是。

問題是,在另一端,我想讀出的值是這樣的:

var queryStrings = HttpUtility.UrlDecode(Request.QueryString.ToString()); 
var arrQueryStrings = queryStrings.Split('&'); 
var part1 = arrQueryStrings[0]; 
var part2 = arrQueryStrings[1]; 

如果sid不過去了,我得到一個錯誤的第2部分,因爲它的範圍之外陣列。

任何想法如何處理?

+0

看在這個崗位http://stackoverflow.com/questions/646365/how-do-i-get-data-from-the-query-string-in-asp第二個答案 –

+0

那傢伙只是拉回一個變量。如果有兩個,我需要拉回兩個,如果有一個,我需要拉回兩個。我想我可以檢查querystrings來查看「&」是否存在,因爲這就是我會知道是否有兩個變量或只有一個。但我不知道如何在C#中做到這一點。 –

回答

2

使用查詢字符串對象來請求特定的項目而不是手動解析字符串。

string part1 = Request.QueryString["page"]; 
string part2 = Request.QueryString["sid"]; 

if(part2 != null) 
{//check if part2 is sent 
} 
+0

完美!我有一種感覺,有一個更簡單的方法。 –

+0

如果你打算把'sid'轉換爲一個整數,我會使用'string.IsNullOrWhiteSpace(part2)'而不是一個空檢查。 – Tim