C# 如何在Sitecore 7.2 C中获取常规链接的url路径#
我对Sitecore和C#还很陌生,在过去的几天里,我一直在努力解决一些问题,所以我希望你们中的一位能够帮助我 我刚刚从Sitecore 6升级到7,并且有一些变化。以下代码用于Sitecore 6,但获取链接字段url的方式不再有效C# 如何在Sitecore 7.2 C中获取常规链接的url路径#,c#,sitecore,sitecore7,sitecore7.2,C#,Sitecore,Sitecore7,Sitecore7.2,我对Sitecore和C#还很陌生,在过去的几天里,我一直在努力解决一些问题,所以我希望你们中的一位能够帮助我 我刚刚从Sitecore 6升级到7,并且有一些变化。以下代码用于Sitecore 6,但获取链接字段url的方式不再有效 protected string writeBalloon(Item targetItem) { string balloonString = ""; Sitecore.Data.Fields.LinkField lin
protected string writeBalloon(Item targetItem)
{
string balloonString = "";
Sitecore.Data.Fields.LinkField linkfield = targetItem.Fields["Link"];
balloonString += "<a class='balloon-link' href='" + linkfield.Url + "'>";
balloonString += "<div class='balloon'>";
balloonString += "<h3>";
balloonString += targetItem.Fields["Title"];
balloonString += "</h3>";
balloonString += "<p>";
balloonString += targetItem.Fields["Text"];
balloonString += "</p>";
balloonString += "</div>";
balloonString += "</a>";
return balloonString;
}
受保护的字符串写分配(项targetItem)
{
字符串“=”;
Sitecore.Data.Fields.LinkField LinkField=targetItem.Fields[“Link”];
气球字符串+=“”;
返回字符串;
}
我想我已经阅读了/尝试了谷歌上所有关于这个问题的文章,但我仍然无法正确理解。您需要首先使用linkfield检查您的链接字段类型。Url仅适用于sitecore中的外部链接类型,您的代码如下所示:
public String LinkUrl(Sitecore.Data.Fields.LinkField lf)
{
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;
}
}
protected string writeBalloon(Item targetItem)
{
string balloonString = "";
Sitecore.Data.Fields.LinkField linkfield = targetItem.Fields["Link"];
balloonString += "<a class='balloon-link' href='" + LinkUrl(linkfield) + "'>";
balloonString += "<div class='balloon'>";
balloonString += "<h3>";
balloonString += targetItem.Fields["Title"];
balloonString += "</h3>";
balloonString += "<p>";
balloonString += targetItem.Fields["Text"];
balloonString += "</p>";
balloonString += "</div>";
balloonString += "</a>";
return balloonString;
}
公共字符串链接URL(Sitecore.Data.Fields.LinkField lf)
{
开关(lf.LinkType.ToLower())
{
案例“内部”:
//如果链接不为空,则对内部链接使用LinkManager
返回lf.TargetItem!=null?Sitecore.Links.LinkManager.GetItemUrl(lf.TargetItem):string.Empty;
案例“媒体”:
//如果链接不为空,请使用MediaManager进行媒体链接
返回lf.TargetItem!=null?Sitecore.Resources.Media.MediaManager.GetMediaUrl(lf.TargetItem):string.Empty;
“外部”案例:
//只需返回外部链接
返回lf.Url;
案例“锚定”:
//在锚点链接前面加上#if link(如果链接不为空)
return!string.IsNullOrEmpty(lf.Anchor)?“#”+lf.Anchor:string.Empty;
案例“mailto”:
//只需返回mailto链接
返回lf.Url;
案例“javascript”:
//只需返回javascript
返回lf.Url;
违约:
//请告诉编译器,这个
//条件永远不会满足
返回lf.Url;
}
}
受保护的字符串写分配(项targetItem)
{
字符串“=”;
Sitecore.Data.Fields.LinkField LinkField=targetItem.Fields[“Link”];
气球字符串+=“”;
返回字符串;
}
注意
:为LinkUrl()方法提取的代码片段取自此您需要首先使用linkfield检查链接字段类型。Url仅适用于sitecore中的外部链接类型,您的代码如下所示:
public String LinkUrl(Sitecore.Data.Fields.LinkField lf)
{
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;
}
}
protected string writeBalloon(Item targetItem)
{
string balloonString = "";
Sitecore.Data.Fields.LinkField linkfield = targetItem.Fields["Link"];
balloonString += "<a class='balloon-link' href='" + LinkUrl(linkfield) + "'>";
balloonString += "<div class='balloon'>";
balloonString += "<h3>";
balloonString += targetItem.Fields["Title"];
balloonString += "</h3>";
balloonString += "<p>";
balloonString += targetItem.Fields["Text"];
balloonString += "</p>";
balloonString += "</div>";
balloonString += "</a>";
return balloonString;
}
公共字符串链接URL(Sitecore.Data.Fields.LinkField lf)
{
开关(lf.LinkType.ToLower())
{
案例“内部”:
//如果链接不为空,则对内部链接使用LinkManager
返回lf.TargetItem!=null?Sitecore.Links.LinkManager.GetItemUrl(lf.TargetItem):string.Empty;
案例“媒体”:
//如果链接不为空,请使用MediaManager进行媒体链接
返回lf.TargetItem!=null?Sitecore.Resources.Media.MediaManager.GetMediaUrl(lf.TargetItem):string.Empty;
“外部”案例:
//只需返回外部链接
返回lf.Url;
案例“锚定”:
//在锚点链接前面加上#if link(如果链接不为空)
return!string.IsNullOrEmpty(lf.Anchor)?“#”+lf.Anchor:string.Empty;
案例“mailto”:
//只需返回mailto链接
返回lf.Url;
案例“javascript”:
//只需返回javascript
返回lf.Url;
违约:
//请告诉编译器,这个
//条件永远不会满足
返回lf.Url;
}
}
受保护的字符串写分配(项targetItem)
{
字符串“=”;
Sitecore.Data.Fields.LinkField LinkField=targetItem.Fields[“Link”];
气球字符串+=“”;
返回字符串;
}
注意
:自Sitecore 7.2以来,链接字段
类中添加了一个方法GetFriendlyUrl()
,该方法的LinkUrl()代码片段取自此
Sitecore.Data.Fields.LinkField linkfield = targetItem.Fields["Link"];
var url = linkfield.GetFriendlyUrl();
请参见自Sitecore 7.2以来,向
链接字段
类添加了一个方法GetFriendlyUrl()
,以解决此问题
Sitecore.Data.Fields.LinkField linkfield = targetItem.Fields["Link"];
var url = linkfield.GetFriendlyUrl();
请参见非常感谢您的快速回复。工作得很有魅力!:)非常感谢您的快速回复。工作得很有魅力!:)