1

您好正在尝试此代码

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 数据库,我无法在页面编辑器中进行编辑。单击页面编辑器中的链接后,我需要编辑目标。有人可以建议我吗?

4

1 回答 1

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) 创建您自己的 Sitecore LinkProvider 以更改行为参见此示例创建 Sitecore LinkProvider 以使用不同的 LinkManager 配置

于 2015-03-10T20:33:38.447 回答