1

ビューに次の C# Razor があります。

@{var activeFilters = 0;}
@foreach (string key in Request.QueryString)
{
    string value = Request.QueryString[key];

    if (!String.IsNullOrEmpty(value))
    {
        if (key.ToLower() != "filter" || key.ToLower() != "page" || key.ToLower() != "gridtype")
        {
            activeFilters++;
        }
    }
}

これはクエリ文字列をループし、カウントには多くの有効な値があり、activeFilters 変数に入力されます。また、filter、page、および gridtype も無視します。

ここではいくつかの例を示します。

?page=1 (0)

?filter=&other=test (1)

?filter&other=test (1)

私が抱えている問題:

  • キー filter、page、および gridtype は無視されません。
  • クエリキーに等号がない場合、たとえば?pageエラーで壊れますObject reference not set to an instance of an object.
4

2 に答える 2

2

簡単にできる、

@{ var activeFilters = Request.QueryString.AllKeys
       .ToList()
       .Where(key => key != "filter")
       .Where(key => key != "page")
       .Where(key => key != "gridtype")
       .Count(key => !string.IsNullOrEmpty(Request.QueryString[key]));}
于 2013-11-12T12:39:03.513 に答える