媒体文件的Sitecore内部链接?

媒体文件的Sitecore内部链接?,sitecore,sitecore6,Sitecore,Sitecore6,在Sitecore 6.5解决方案中,我有以下几点: <sc:Text runat="server" Field="bodyText"/> 我在解决方案中使用了后一种方法,但在第一种方法中使用得不多。 我现在发现,在使用后者时,指向媒体库的所有链接的格式都是~/media/31F0E8084F9443789F25836A2B285D3E.ashx,即使在web.config中media.useItemPath设置为true 但是,当我使用前面提到的方法时,指向媒体库项目的链接的格式

在Sitecore 6.5解决方案中,我有以下几点:

<sc:Text runat="server" Field="bodyText"/>
我在解决方案中使用了后一种方法,但在第一种方法中使用得不多。 我现在发现,在使用后者时,指向媒体库的所有链接的格式都是
~/media/31F0E8084F9443789F25836A2B285D3E.ashx
,即使在web.config中
media.useItemPath
设置为
true

但是,当我使用前面提到的方法
时,指向媒体库项目的链接的格式是正确的(没有guid,但是媒体库的文件夹结构)


发生了什么事?

第一个是一个控件,它通过特定的管道和编辑程序将项目引用保存为友好的URL

第二个是直接值调用,它返回未编辑的值。 要获取FriedOnly url,应使用控件


为什么需要直接调用该值?

第一个是一个控件,它通过某些管道和编校程序将项目引用保存为友好URL

第二个是直接值调用,它返回未编辑的值。 要获取FriedOnly url,应使用控件


为什么需要直接调用该值?

正如halbherz提到的后者

Sitecore.Context.Item["bodyText"]
是字段的文字值。它不经过sitecore
RenderField
管道,因此没有任何链接得到扩展

如果要从代码隐藏渲染字段,可以使用
FieldRenderer
类,如:

Sitecore.Web.UI.WebContols.FieldRenderer.Render("bodyText", Sitecore.Context.Item)

正如halbherz提到的后者

Sitecore.Context.Item["bodyText"]
是字段的文字值。它不经过sitecore
RenderField
管道,因此没有任何链接得到扩展

如果要从代码隐藏渲染字段,可以使用
FieldRenderer
类,如:

Sitecore.Web.UI.WebContols.FieldRenderer.Render("bodyText", Sitecore.Context.Item)

只是为了进一步澄清(halbherz和marto所说的完全正确),以便您更好地理解~为什么~他们是这样的

在RichText字段中,指向媒体和其他sitecore项目的链接使用项目的“短GUID”以这种格式存储(~/media/31F0E8084F9443789F25836A2B285D3E.ashx),这样,如果有人重命名或移动您的媒体/内容项目,链接仍然有效(而不是在字段中嵌入项目的全名和路径)

使用FieldRenderer(或继承自FieldRenderer的控件,如sc:text/sc:image等)时,将调用
RenderField
管道,链接由
LinkManager
处理(有关配置的更多信息,请参阅web.config
部分)。LinkManager的存在使得所有链接都以一致的方式处理。直接调用字段值会绕过此管道,从而获得字段的原始文本


您可以使用以下命令创建与此类似的链接:
LinkManager.getdynamiccurl(item)

只是为了进一步澄清(@halbherz和@marto所说的完全正确),以便您更好地理解~why~他们是这样的

在RichText字段中,指向媒体和其他sitecore项目的链接使用项目的“短GUID”以这种格式存储(~/media/31F0E8084F9443789F25836A2B285D3E.ashx),这样,如果有人重命名或移动您的媒体/内容项目,链接仍然有效(而不是在字段中嵌入项目的全名和路径)

使用FieldRenderer(或继承自FieldRenderer的控件,如sc:text/sc:image等)时,将调用
RenderField
管道,链接由
LinkManager
处理(有关配置的更多信息,请参阅web.config
部分)。LinkManager的存在使得所有链接都以一致的方式处理。直接调用字段值会绕过此管道,从而获得字段的原始文本


您可以使用以下命令创建与此类似的链接:
LinkManager.getdynamiccurl(item)

您能检查页面源代码中的内容吗?是否在开头有tilda字符或%7e而不是tilda字符?例如~/media/31F0E8084F9443789F25836A2B285D3E.ashx或%7e/media/31F0E8084F9443789F25836A2B285D3E.ashx?您能检查页面的源中有什么内容吗?是否在开头有tilda字符或是%7e而不是tilda字符?例如~/media/31F0E8084F9443789F25836A2B285D3E.ashx或%7e/media/31F0E8084F9443789F25836A2B285D3E.ashx?这是我要写的。在Sitecore 6.X中,您需要使用或FieldRenderer来正确“渲染”链接。这就是我要写的。在Sitecore 6.X中,您需要使用或FieldRenderer来正确“渲染”链接。