如何将网页中的链接提供给Sitecore媒体库中的文档?
在我的模板中,我有一个Treelist,它允许用户为给定的页面对象选择多个文档。在我的子布局代码隐藏中,我遍历Treelist字段中的项目以获取其ID,然后使用Sitecore.Links.LinkManager.GetItemUrl()
获取项目的URL。目前我只是使用超链接渲染链接,但是点击链接后我得到的错误是没有找到布局。
我是否需要创建一个布局,这是一个ashx处理程序来处理下载媒体项的内容流,或者是否有内置的内容可以做到这一点?
答案 0 :(得分:6)
要生成媒体库中项目的链接,您应该使用MediaManager
。例如:
string url = Sitecore.Resources.Media.MediaManager.GetMediaUrl(item)
答案 1 :(得分:1)
尝试使用Sitecore.Resource.Media.MediaProvider.GetMediaUrl()
。
或者,对于每个项目,转换为MediaItem
媒体文件夹应为:/〜/ media /
MediaPath是一个属性
扩展名是文件扩展名等。
另请参阅使用MediaUrlOptions
。
答案 2 :(得分:1)
回应mdresser并完成Younes的评论;确保使用StringUtil的前缀'/'如下所示:
var thumbnailUrl = Sitecore.StringUtil.EnsurePrefix('/',
Sitecore.Resources.Media.MediaManager.GetThumbnailUrl(_thumbnail));
答案 3 :(得分:0)
您可以拥有类型为“文件”的文档的TreeList,并且在您的代码中,您可以使用循环来获取该文档项的URL(具有文件类型),并且您可以获取Media Url该文件项并将其分配给超链接。
以下是代码段:
List<Item> documentList = your list of selected documents from sitecore
foreach(Item item in documentList)
{
FieldField file = item.Fields["FileField Name"];
if(file != null)
{
if(file.MediaItem != null)
{
hyperlink.NavigateUrl = Sitecore.StringUtil.EnsurePrefix('/',Sitecore.Resources.Media.MediaManager.GetMediaUrl(file.MediaItem));
}
}
}