Sitecore:从Field值以编程方式解析Url

use*_*923 4 web-services sitecore sitecore6

我有一个字段,可以包含内部链接,媒体链接,外部链接等,通常我们通过提供sc来解决它:链接项目和相应的字段,它相应地解析网址.

如果我以编程方式解析url(使用Web服务进行序列化和发送)我需要做什么?

我真的很欣赏正确方向的提示或指示.

jam*_*kam 16

Sitecore API中没有任何内容可以直接实现您的需求,但您可以创建一个帮助方法来实现您的需求.我假设你正在使用LinkField.

Brian Pedersen的博客上有一篇很棒的文章,讲述了Sitecore与LinkManager和MediaManager的链接.以下代码摘录自他的文章:

Sitecore.Data.Fields.LinkField lf = Sitecore.Context.Item.Fields["Link"];
switch (lf.LinkType.ToLower())
{
  case "internal":
    // Use LinkMananger for internal links, if link is not empty
    return lf.TargetItem != null ? Sitecore.Links.LinkManager.GetItemUrl(lf.TargetItem) : string.Empty;
  case "media":
    // Use MediaManager for media links, if link is not empty
    return lf.TargetItem != null ? Sitecore.Resources.Media.MediaManager.GetMediaUrl(lf.TargetItem) : string.Empty;
  case "external":
    // Just return external links
    return lf.Url;
  case "anchor":
    // Prefix anchor link with # if link if not empty
    return !string.IsNullOrEmpty(lf.Anchor) ? "#" + lf.Anchor : string.Empty;
  case "mailto":
    // Just return mailto link
    return lf.Url;
  case "javascript":
    // Just return javascript
    return lf.Url;
  default:
    // Just please the compiler, this
    // condition will never be met
    return lf.Url;
}
Run Code Online (Sandbox Code Playgroud)

如果您需要解决内部URL要与域名完全合格的,然后传递UrlOptions.SiteResolving=TrueLinkManager.


小智 5

string url = linkField.GetFriendlyUrl();
Run Code Online (Sandbox Code Playgroud)

在哪里linkField的实例LinkField.