C# 异常详细信息:System.NotSupportedException:Like方法不支持null
如果查询为空,我将选中搜索框。如果为空,则显示查询空错误消息。但是,它绕过了我对空查询的所有检查,直接转到我的ExecuteQuerySearch方法,然后类似错误的方法不支持null。在我的SearchHelper.cs中的搜索方法中。它不喜欢空对象通过我的搜索方法C# 异常详细信息:System.NotSupportedException:Like方法不支持null,c#,null,request.querystring,notsupportedexception,C#,Null,Request.querystring,Notsupportedexception,如果查询为空,我将选中搜索框。如果为空,则显示查询空错误消息。但是,它绕过了我对空查询的所有检查,直接转到我的ExecuteQuerySearch方法,然后类似错误的方法不支持null。在我的SearchHelper.cs中的搜索方法中。它不喜欢空对象通过我的搜索方法 //If no query show empty query error if (query == Request.QueryString[QueryStrings.EmptyQuery]
//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();
}
我想在执行搜索方法之前进行检查,但任何建议或帮助都将不胜感激。谢谢 我将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>();
}
查询集在哪里?顺便说一下,如果查询实际为null,query.Equalsnull将抛出异常。string query=Request.QueryString[QueryStrings.query];var scope=Request.QueryString[QueryString.scope];实际上,当我调试时,我有一个断点,在断点处检查字符串是否为空/null,它将通过对方法的检查并抛出异常。如果设置query=Request.QueryString[QueryString.query]-那么为什么在if语句中再次使用Request.QueryString[QueryString.query]?另外,什么是QueryStrings.EmptyQuery?公共静态类QueryStrings{public static string EmptyQuery=eq;public static string Query=q;public static string Scope=s;}如果是空查询字符串,则添加查询字符串eq=t@迈克