当前位置: 首页 > 编程语言 > C#

Sitecore中的GeneralLink分享

时间:2023-04-10 22:10:39 C#

Sitecore中的GeneralLink我是Sitecore的新手。我创建了一个页面模板并为类型为GeneralLink的URL添加了一个字段。我为链接文本创建了另一个字段(这是本项目的标准做法)。我只想在我的用户控件中显示链接,但我无法让它工作。这应该很简单,但我会围绕这是我尝试过的代码示例..ascx:ascx.cs:lnkMain.NavigateUrl=SiteCore.Context.Item.GetGeneralLink("Link1");lnkMain.Text=item.GetFieldValue("Link1Text");您应该谨慎使用linkField.Url,因为它会错误地呈现指向Sitecore项目和媒体的内部链接。您应该使用Sitecore.Links.LinkManager.GetItemUrl(item)和Sitecore.Resources.Media.MediaManager.GetMediaUrl(item)。根据链接类型,最好有一个帮助程序(扩展)方法为您返回正确的URL。查看这篇SitecoreLinksvs.LinkManager和MediaManager博客文章,其中包含您需要的正确代码。以供参考:publicstaticStringLinkUrl(thisSitecore.Data.Fields.LinkFieldlf){switch(lf.LinkType.ToLower()){case"internal"://内部链接使用LinkMananger,如果链接不为空则返回lf.TargetItem!=null?Sitecore.Links.LinkManager.GetItemUrl(lf.TargetItem):string.Empty;case"media"://将MediaManager用于媒体链接,如果链接不为空,则返回lf.TargetItem!=null?Sitecore.Resources.Media.MediaManager.GetMediaUrl(lf.TargetItem):string.Empty;case"external"://只返回外部链接returnlf.Url;case"anchor"://前缀锚链接#iflinkifnotemptyreturn!string.IsNullOrEmpty(lf.Anchor)?"#"+lf.Anchor:string.Empty;case"mailto"://只返回mailto链接returnlf.Url;case"javascript"://只返回javascriptreturnlf.Url;default://请编译器,这个//条件永远不会满足returnlf.Url;}}使用方法:Sitecore.Data.Fields.LinkFieldlinkField=item.Fields["Link1"];lnkMain.NavigateUrl=linkField.LinkUrl();当然,最好使用控件并让Sitecore为您处理,但从Sitecore7.2开始,您似乎没有该选项,linkField.Url有一个替代方案:Sitecore.Data.Fields.LinkFieldlinkField=item.Fields["Link1"];lnkMain.NavigateUrl=linkfield.GetFriendlyUrl();引入了新的LinkField.GetFriendlyUrl()方法。无论字段包含何种类型的链接,此方法都可以轻松输出有效的URL。对于内部链接,此方法从LinkManager.GetItemUrl()返回一个URL。对于媒体链接,此方法从MediaManager.GetMediaUrl()返回一个URL。对于外部链接、锚链接、电子邮件链接和JavaScript链接,此方法返回LinkField.Url属性的值。(400051)Sitecore7.2更改如果您使用链接控件会更容易:这样您就不必执行任何代码隐藏操作,您也可以使用页面编辑器。您可以在下面使用,它会为您工作。当您为项目的GeneralLink字段赋值时,标有“链接描述”的字段会出现在弹出的“内部链接”对话框中。填写值并使用:就是这样。一切对你来说都是“自动”的,自动魔术。您需要获取项目的Linkfield值,然后获取项目的LinkField类型。这将为您提供“内部”、“外部”、“mailto”链接的类型,并基于此您可以获得@jammykam提到的链接字段的URL。您还可以检索链接文本。供参考:以上是C#学习教程:GeneralLink在Sitecore分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——publicstaticstringGetGeneralLinkText(LinkFieldlink){text="";如果(链接==null)返回false;如果(!string.IsNullOrEmpty(link.Text)){text=link.Text;返回真;}switch(link.LinkType){case"internal":if(link.TargetItem==null)returnfalse;text=link["文本域名称"];休息;案例“外部”:案例“mailto”:案例“锚点”:案例“javascript”:text=link.Text;休息;案例“媒体”:如果(link.TargetItem==null)返回false;Sitecore.Data.Items.MediaItemmedia=newSitecore.Data.Items.MediaItem(link.TargetItem);文本=媒体名称;休息;案例“”:中断;默认值:返回“”;}returnlink["文本域名称"];}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: