Если я не пропустил уловку, это не представляется возможным при использовании EPiServer PropertyCriteriaCollection.
Я копался в отражателе, и вот мои выводы.Метод FPWC в конечном итоге вызывает EPiServer.DataAccess.PropertySearchDB.FastFindPagesWithCriteria ().
В этом методе есть следующее:
foreach (PropertyCriteria criteria in criterias)
{
if (criteria.IsNull)
{
criteria.Value = null;
}
else if (string.IsNullOrEmpty(criteria.Value))
{
throw new EPiServerException("The crieria value cannot be null or empty. Set the IsNull property to search for null.");
}
...
}
Так что невозможно найти пустое строковое значение без установки IsNull в true.Затем он передается методу EPiServer.DataAccess.PropertySearchDB.ExecuteCriteria, который создает и форматирует команду DB.Поскольку IsNull имеет значение true, используется хранимый процесс netPropertySearchNull.Для поиска строки необходимо использовать хранимую процедуру netPropertySearchString.
if (criteria.IsNull && !PageDB.IsMetaData(criteria.Name))
{
cmd.CommandText = "netPropertySearchNull";
}
Мое предложение заключается в том, чтобы загрузить полный список страниц и выполнить фильтрацию с использованием linq.В качестве альтернативы вы можете обойти API и реализовать прямой запрос к БД или использовать некоторые низкоуровневые методы доступа к данным EPiServer (не рекомендуется))