2017-02-28 69 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