异常详细信息:System.NotSupportedException:类似方法不支持null

时间:2014-08-04 15:00:44

标签: c# null request.querystring notsupportedexception

如果查询为空,我正在检查搜索框。如果为空,则显示查询空错误消息。但是,它绕过我对空查询的所有检查并直接进入我的ExecuteQuerySearch方法,然后在我的SearchHelper.cs中的搜索方法中出现错误(类似方法不支持null。)。它不喜欢null对象通过我的搜索方法

            //If no query show empty query error
        if (query == Request.QueryString[QueryStrings.EmptyQuery] || query.Equals(null) || string.IsNullOrEmpty(query) || query == TranslateText(Dictionary.Keys.KeywordSearch))
        {
            phNoQuery.Visible = true;
            return;
        }

        _totalResults = string.IsNullOrEmpty(scope) ? SearchHelper.ExecuteQuerySearch(query, Model.Divisions).ToList() : SearchHelper.ExecuteQuerySearch(query).ToList();
        resultsCount = _totalResults.Count();

SearchHelper.cs中的部分ExecuteQuerySearch方法:

    using (var searchContext = ContentSearchManager.GetIndex(GetSitecoreSearchIndex()).CreateSearchContext())
        {
                //Errors at allItems
                var allItems = searchContext.GetQueryable<SearchItem>()
                    .Where(GetQueryExpression(QueryType.Content, query))
                    .Where(predicate)
                    .Where(GetContent())
                    .GetResults();
                var hits = allItems.Hits.Where(x => x.Document.AbstractTitle != null).ToList();
                return hits.Select(x => x.Document).ToList();

        }

我想在执行搜索方法之前进行检查,但是感谢任何建议或帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

我将linq语句更改为if语句并修复了代码。无论是否返回,我都传递了一个空查询。

if (string.IsNullOrEmpty(scope) && !string.IsNullOrEmpty(query))
        {
            _totalResults = SearchHelper.ExecuteQuerySearch(query, Model.Divisions).ToList();
        }
        else if (!string.IsNullOrEmpty(query))
        {

            _totalResults = SearchHelper.ExecuteQuerySearch(query).ToList();
        }
        else
        {
            _totalResults = new List<SearchItem>();
        }