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.

Другие вопросы по тегам