2

如何在页面中提供指向 Sitecore 媒体库中文档的链接?

在我的模板中,我有一个 Treelist,它允许用户为给定的页面对象选择多个文档。在我的子布局代码隐藏中,我遍历 Treelist 字段中的项目以获取它们的 ID,然后用于Sitecore.Links.LinkManager.GetItemUrl()获取项目的 URL。目前,我只是使用超链接呈现链接,但在单击链接时,我收到错误消息,提示未找到布局。

我是否需要创建一个布局,它是一个 ashx 处理程序来处理下载媒体项目的内容流,或者是否有内置的东西可以做到这一点?

4

4 回答 4

6

要生成指向媒体库中项目的链接,您应该使用MediaManager. 例如:

string url = Sitecore.Resources.Media.MediaManager.GetMediaUrl(item)
于 2011-04-18T19:15:28.410 回答
1

尝试使用Sitecore.Resource.Media.MediaProvider.GetMediaUrl().

或者,对于每个项目,将其转换为 MediaItem。
媒体文件夹应该是:/~/media/
MediaPath 是一个属性。
扩展名是文件扩展名等。

还要看看使用MediaUrlOptions.

于 2011-04-18T19:22:32.143 回答
1

回复 mdresser 并完成 Younes 的评论;使用 StringUtil 确保前缀 '/' 如下所示:

var thumbnailUrl = Sitecore.StringUtil.EnsurePrefix('/',
                        Sitecore.Resources.Media.MediaManager.GetThumbnailUrl(_thumbnail));
于 2012-11-28T16:56:27.370 回答
0

您可以拥有一个“文件”类型的文档树列表,并且在您背后的代码中,您可以迭代一个循环以获取该文档项(具有文件类型)的 url,然后您可以获得该文件项的媒体 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));
         }
     }
 }
于 2014-05-08T16:56:43.807 回答