0

我正在写这个函数:

public static String QueryString(string queryStringKey)
{
    if (HttpContext.Current.Request.QueryString[queryStringKey] != null)
    {
        if (HttpContext.Current.Request.QueryString[queryStringKey].ToString() != string.Empty)
            return HttpContext.Current.Request.QueryString.GetValues(1).ToString();
    }
    return "NAQ";
}

我只想从查询字符串参数中获取一个值。例如,我将“page”发送到我的函数,url 是:“sth.com/?page=1&page=2”,函数返回给我:“1,2”;但我想要第一个值:“1”,如何?

4

2 回答 2

1

GetValuesstring[]如果键存在,则返回 a 。一个数组是从零开始的,所以你可以通过使用来获得第一个元素array[0],你GetValues(1)在你的代码中使用,我假设你想要第一个。

您还可以使用Enumerable.First扩展方法:

Request.QueryString.GetValues("page").First();  

由于GetValues返回的不是空数组,但null如果键不存在,您需要明确检查(FirstOrDefault不起作用):

public static String QueryString(string queryStringKey)
{
    if (HttpContext.Current != null && HttpContext.Current.Request != null)
    {
        string[] values = HttpContext.Current.Request.QueryString.GetValues("queryStringKey");
        if (values != null) return values.First();
    }
    return "NAQ";
}
于 2013-08-21T12:23:54.360 回答
0

A better approach would be -

public static String QueryString(string queryStringKey)
{

    if (HttpContext.Current!=null && HttpContext.Current.Request!=null && !string.IsNullOrEmpty(HttpContext.Current.Request.QueryString[queryStringKey])
    {
        return HttpContext.Current.Request.QueryString.GetValues(queryStringKey).First();
    }
    return "NAQ";
}
于 2013-08-21T12:37:24.937 回答