Sitecore Linkmanager всегда ссылается на ссылку на веб-базу данных даже из редактора страниц
Привет пытаюсь этот код
public String GetItemUrl(Item item)
{
Sitecore.Links.UrlOptions urlOptions = (Sitecore.Links.UrlOptions)Sitecore.Links.UrlOptions.DefaultOptions.Clone();
urlOptions.SiteResolving = true;
return Sitecore.Links.LinkManager.GetItemUrl(item,urlOptions);
}
ViewBag.thisurl = GetItemUrl(item)
а потом из cshtml
a href="@ViewBag.thisURL" .....
Когда я нажимаю на ссылку, это всегда указывает на базу данных CD, и я не могу редактировать в редакторе страниц. Мне нужно отредактировать цель после того, как я нажму на ссылку в редакторе страниц. Кто-нибудь может мне предложить?
1 ответ
Вы используете SiteResolving, вы используете CMS и CD на одном сервере? поэтому те же самые web.config и имена хостов в разделе сайтов web.config всегда указывают на CD. SiteResolving объяснил
Есть несколько вариантов.
1) Создайте условие и отключите SiteResolving в режиме редактирования страницы. что-то вроде этого:
public String GetItemUrl(Item item)
{
Sitecore.Links.UrlOptions urlOptions = (Sitecore.Links.UrlOptions)Sitecore.Links.UrlOptions.DefaultOptions.Clone();
if (Sitecore.Context.PageMode.IsPageEditor || Sitecore.Context.PageMode.IsPreview)
{
//depend on your site configuration this is a idea
urlOptions.SiteResolving = false;
}
else
{
urlOptions.SiteResolving = true;
}
return Sitecore.Links.LinkManager.GetItemUrl(item,urlOptions);
}
2) Создайте свой собственный SitePore LinkProvider для изменения поведения, см. Этот пример. Создайте Sitecore LinkProvider для использования различных конфигураций LinkManager.