Использование работающего запроса Sitecore в коде - PullRequest
2 голосов
/ 26 января 2011

Я боролся с этим кодом запроса Sitecore. Все элементы опубликованы, запрос работает в XPath Builder, но он всегда возвращает 0 результатов в коде позади. Я скопировал это из примеров кода, на которые никто больше не жаловался, и до сих пор не получил результатов. Я попытался добавить с "query:", но он выдает синтаксическую ошибку.

string query = "/sitecore/content/ShrinersHospital2/CareAndTreatment//*[@@templatename = 'CareAndTreatmentType' and @TreatmentType = '{ECDBE944-99DE-4347-8FA2-6613FA85402C}']"; 

Item[] items = Sitecore.Context.Database.SelectItems(query); 

Ответы [ 2 ]

5 голосов
/ 26 января 2011

Эта конкретная проблема связана с проблемами публикации.Запрашиваемому элементу был изменен шаблон, и при добавочной публикации не удалось правильно передать изменения.Умная публикация заставила код начать работать.

Мне также сообщили, что когда что-то подобное происходит, я должен протестировать обе базы данных, используя код следующим образом:

3 голосов
/ 27 марта 2014

У меня была такая же проблема, и я нашел следующее решение:

   Item[] items = Sitecore.Context.Database.SelectItems(query);

Это не будет работать, так как ваш код выполняется в (текущем) контексте . И код выполняется по пути

/ Sitecore / содержание / ShrinersHospital2 / CareAndTreatment

С помощью вашего запроса выше вы указываете sitecore искать по пути

/ Sitecore / содержание / ShrinersHospital2 / CareAndTreatment / Sitecore / содержание / ShrinersHospital2 / CareAndTreatment

, который вернет 0 элементов в результате, потому что путь не существует.

Попробуйте следующий запрос:

string query = "//*[@@templatename = 'CareAndTreatmentType' and @TreatmentType = '{ECDBE944-99DE-4347-8FA2-6613FA85402C}']"; 
Item[] items = Sitecore.Context.Database.SelectItems(query);

Когда вы переключаете свою базу данных на «web», у вас нет контекста, и ваш «начальный» путь - /. Тогда код ниже возвращает элементы с вашим запросом, потому что путь существует

/ sitecore / content / ShrinersHospital2 / CareAndTreatment

string query = "/sitecore/content/ShrinersHospital2/CareAndTreatment//*[@@templatename = 'CareAndTreatmentType' and @TreatmentType = '{ECDBE944-99DE-4347-8FA2-6613FA85402C}']"; 
var database = Sitecore.Configuration.Factory.GetDatabase("web");
items = database.SelectItems(query);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...