2011-04-13 43 views
1

我有网址:http://site.com/page.aspx?updateASP.Net MVC:无键获取查询值

我该如何检查该更新值是否存在?

HttpValueCollection对待的是,与null密钥的实体。我曾尝试:

var noKeyValues = Request.QueryString.GetValues(null); 
if (noKeyValues != null && noKeyValues.Any(v=>v==update)) ... 

,但它给了我一个frowny线,因为的GetValues'的说法装饰有[NOTNULL。

,所以我最终会做:

var queryValuesWithNoKey = 
      Request.QueryString.AllKeys.Select((key, index) => new { key, value = Request.QueryString.GetValues(index) }).Where(
        item => item.key == null).Select(item => item.value).SingleOrDefault(); 
    if (queryValuesWithNoKey != null && queryValuesWithNoKey.Any(v => v.ToLower() == "update")) live = true; 

不是最优雅的解决方法。有没有更好的方法从查询字符串中获取无键值?

回答

1

如果这是唯一的关键,你会用

Request.QueryString.ToString()得到“更新”值

2

您可以使用

Request.QueryString[null] 

检索逗号分隔的列表没有值的键。举例来说,如果您的网址是:

http://mysite/?first&second

那么上面将返回

first,second 

在你的情况,你可能只是这样做:

if(Request.QueryString[null] == "update") 
{ 
    // it's an update 
} 
+0

我STIL得到警告'参数饰[NOTNULL]'如果我不介意 - 我能,以及用'Request.QeryString.GetValues(空)'。我不知道如果警告毫无根据的,因为我没有看到[NOTNULL]上的说法。 – 2012-11-16 21:29:52

+0

是的,我认为同样的事情。这一切似乎都行得通,所以我并不担心警告。 – 2012-11-19 05:35:39