Sitecore提供允许用户查看/下载媒体项的链接

时间:2011-04-18 15:23:21

标签: asp.net sitecore sitecore-media-library

如何将网页中的链接提供给Sitecore媒体库中的文档?

在我的模板中,我有一个Treelist,它允许用户为给定的页面对象选择多个文档。在我的子布局代码隐藏中,我遍历Treelist字段中的项目以获取其ID,然后使用Sitecore.Links.LinkManager.GetItemUrl()获取项目的URL。目前我只是使用超链接渲染链接,但是点击链接后我得到的错误是没有找到布局。

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

4 个答案:

答案 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));
         }
     }
 }