2011-04-18 52 views
2

如何在頁面中提供Sitecore媒體庫中文檔的鏈接?Sitecore提供鏈接以允許用戶查看/下載媒體項目

在我的模板中,我有一個允許用戶爲給定頁面對象選擇多個文檔的Treelist。在我的sublayout code-behind中,迭代Treelist字段中的項目以獲取其ID,然後使用Sitecore.Links.LinkManager.GetItemUrl()獲取項目的URL。目前,我只是使用超鏈接呈現鏈接,但點擊鏈接時,我收到錯誤,說沒有找到佈局。

我需要創建一個佈局,它是一個ashx處理程序來處理下載媒體項目的內容流,或者是否有內置的可以做到這一點的內容?

回答

6

要生成媒體庫中項目的鏈接,您應該使用MediaManager。例如:

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

不要忘記使用Sitecore的StringUtil確保前綴! – Younes 2011-04-19 06:34:10

+0

@Younes好的提示。 – 2011-04-19 10:29:23

+0

@Younes謝謝你的提示,我應該特別在StringUtil中查看哪些方法?在相關說明中,我剛剛開始在雙語網站中使用此方法,並且遇到了更多問題。 – 2011-04-19 14:58:56

1

嘗試使用Sitecore.Resource.Media.MediaProvider.GetMediaUrl()

或者,對於每個項目,轉換爲MediaItem。
媒體文件夾應該是:/〜/ media/
MediaPath是一個屬性。
擴展名是文件後綴名等。

另請參閱使用MediaUrlOptions

+0

在MediaUrlOptions類中,我應該特別注意哪些屬性? – 2011-04-20 09:05:32

1

迴應mdresser並完成對Younes的評論;保證了前綴「/」使用StringUtil看起來是這樣的:

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

你可以有文件的的TreeList這是在你的代碼類型的「文件」的背後,你可以itterate一個循環來獲取的,該網址文件項目(其具有文件類型),並且您可以獲取該文件項目的「媒體網址」並將其分配給超鏈接。

這裏是代碼片段:

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)); 
     } 
    } 
} 
相關問題