Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net Sitecore提供允许用户查看/下载媒体项目的链接_Asp.net_Sitecore_Sitecore Media Library - Fatal编程技术网

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

Asp.net Sitecore提供允许用户查看/下载媒体项目的链接,asp.net,sitecore,sitecore-media-library,Asp.net,Sitecore,Sitecore Media Library,如何在页面中提供指向Sitecore媒体库中文档的链接 在我的模板中,我有一个树列表,允许用户为给定的页面对象选择多个文档。在我的隐藏子布局代码中,我迭代树列表字段中的项目以获取其ID,然后使用Sitecore.Links.LinkManager.GetItemUrl()获取项目的URL。目前,我只是使用超链接呈现链接,但单击链接时,我得到的错误是没有找到布局 我是否需要创建一个布局,该布局是一个ashx处理程序,用于处理媒体项目的内容流的下载,还是有内置的东西可以实现这一点?要生成指向媒体库中

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

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


我是否需要创建一个布局,该布局是一个ashx处理程序,用于处理媒体项目的内容流的下载,还是有内置的东西可以实现这一点?

要生成指向媒体库中项目的链接,您应该使用
MediaManager
。e、 g:

string url = Sitecore.Resources.Media.MediaManager.GetMediaUrl(item)

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

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


还可以看看如何使用
MediaUrlOptions

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

var thumbnailUrl = Sitecore.StringUtil.EnsurePrefix('/',
                        Sitecore.Resources.Media.MediaManager.GetThumbnailUrl(_thumbnail));

你可以有一个“文件”类型的文档树列表,在你的代码中,你可以写一个循环来获取该文档项(具有文件类型)的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));
         }
     }
 }
List documentList=您从sitecore选择的文档列表
foreach(文档列表中的项目)
{
FieldField file=item.Fields[“FileField Name”];
如果(文件!=null)
{
if(file.mediateItem!=null)
{
hyperlink.NavigateUrl=Sitecore.StringUtil.EnsurePrefix('/',Sitecore.Resources.Media.MediaManager.GetMediaUrl(file.MediaItem));
}
}
}

不要忘记使用Sitecore StringUtil来确保前缀@Younes感谢您提供的提示,在StringUtil中我应该特别关注哪些方法?另一方面,我刚刚开始在一个双语网站上使用这种方法,并且遇到了更多的问题。在MediaUrlOptions类中是否有我应该特别关注的属性?