Sitecore Linkmanager 始终 link 到 Web 数据库 link 甚至从页面编辑器

Sitecore Linkmanager always links to Web Database link even from page editor

您好,我正在尝试此代码

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" .....

当我点击 link 时,它将始终指向 CD 数据库,我无法在页面编辑器中进行编辑。在页面编辑器中单击 link 后,我需要编辑目标。有人可以推荐我吗?

您使用 SiteResolving,是否 运行 CMS 和 CD 在一台服务器上?因此它们具有相同的 web.config 并且站点 web.config 部分中的主机名始终指向 CD。 SiteResolving explained

有多种选择。

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) 创建您自己的 Sitecore LinkProvider 以更改行为,请参阅此示例 Create a Sitecore LinkProvider to use different LinkManager configurations