2016-12-13 4 views
0
hyperlink.NavigateUrl = Sitecore.StringUtil.EnsurePrefix('/',Sitecore.Resources.Media.MediaManager.GetMediaUrl(item)); 

Когда я пытаюсь щелкнуть ссылку, он говорит, что ресурс не найден. потому что он пытается получить элемент из веб-базы данных. Как я могу получить элемент из основной базы данных?Sitecore: Get Media Item из основной базы данных

ответ

1

Вы не можете сделать это по коду. См. Sitecore fundamentals

Вы должны либо опубликовать статью. Или переключить вас сайт, чтобы использовать основную базу данных, а не в сети:

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/"> 
    <sitecore> 
    <sites> 
     <site name="website"> 
     <patch:attribute name="database">master</patch:attribute> 
     </site> 
    </sites> 
    </sitecore> 
</configuration> 
0

Хотя я полностью согласен с @ ответ Антона, чтобы ответить на ваш конкретный вопрос:

, как я могу получить элемент из главной базы данных

Вот как вы могли бы сделать, что:

var masterDB = Sitecore.Configuration.Factory.GetDatabase("master"); 

var itemFromMaster = masterDB.GetItem(item.ID); 
+2

Хотя вы * можете * сделать это, О.П. следует учитывать, если он * должен * , Если это общедоступный код сайта и сайт развернут на CD-сервер, лучше всего использовать CD-сервер, чтобы удалить строку соединения для «master». Если это будет сделано, оба этих ответа потерпят неудачу. – sh1rts

0

Добавьте к этому конец строки: sc_database = мастер

Это должно выглядеть как:

hyperlink.NavigateUrl = Sitecore.StringUtil.EnsurePrefix('/',Sitecore.Resources.Media.MediaManager.GetMediaUrl(item)) + "?sc_database=master";