ASP.Net MVC:获取不带键的查询值

| 我有网址:http://site.com/page.aspx?update 如何检查该更新值是否存在? “ 0”将其视为具有“ 1”键的实体。我试过了:
var noKeyValues = Request.QueryString.GetValues(null);
if (noKeyValues != null && noKeyValues.Any(v=>v==update)) ...
但这给我带来皱眉,因为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;
不是最优雅的解决方法。是否有更好的方法从查询字符串获取无键值?     
已邀请:
您可以使用
Request.QueryString[null]
检索逗号分隔的无值列表。例如,如果您的网址是:
http://mysite/?first&second
然后以上将返回
first,second
就您而言,您可以执行以下操作:
if(Request.QueryString[null] == \"update\") 
{
    // it\'s an update
}
    
如果那是您唯一要使用的密钥 Request.QueryString.ToString()以获取\“ update \”值     
我知道我迟到聚会了,但这是我用于此类任务的功能。
internal static bool HasQueryStringKey(HttpRequestBase request, string key)
{
    // If there isn\'t a value, ASP will not recognize variable / key names.
    string[] qsParts = request.QueryString.ToString().Split(\'&\');
    int qsLen = qsParts.Length;
    for (int i = 0; i < qsLen; i++)
    {
        string[] bits = qsParts[i].Split(\'=\');
        if (bits[0].Equals(key, StringComparison.OrdinalIgnoreCase))
        {
            return true;
        }
    }

    return false;
}
您可能需要对其进行更新,使其区分大小写,或者根据您的目的使用不同的参数,但这对我来说一直很好。     

要回复问题请先登录注册