2013-02-19 28 views
3

我需要在構建json feed時讀取控制器中的圖像參數(源,寬度,高度)。如何從Sitecore MediaItem獲取圖像參數?

我做了所有從this question的步驟。但是,建議的方法允許您使用View Helper獲取圖像標記,並且只能在視圖上下文中使用。因爲我不能(並且真的不想這麼做,因爲這是非常糟糕的做法)在控制器中創建HTMLHelper,所以我無法在其中生成HTMLHelper。

This method只給我* .ashx的路徑,不管我在web.config文件中設置了什麼。所以我有這個* .ashx URL(/~/media/5EE32493443547ED8DB0B26166209C85.ashx),但我無法利用它並生成正常的* .jpg URL,它是/~/media/001FC62786B044F5888640C7164ED72F.JPG

* .ashx的URL中有(5EE32493-4435-47ED-8DB0-B26166209C85)ID,但* .JPG不...

還當我貼* .ashx的網址進入瀏覽器,服務器異常回應說,資源不能被發現。

回答

4

後搜索和嘗試,並測試多種選擇的一段時間後,我發現很簡單的解決辦法:

string mediaUrl = Sitecore.Resources.Media.MediaManager.GetMediaUrl(item); 

item應該Sitecore.Data.Items.MediaItem類的對象。

mediaUrl變量具有以下值:在這個簡單的方法/~/media/001FC62786B044F5888640C7164ED72F.JPG

立足,我回來大約寬度和高度的問題,我已經寫了簡單的類(以方便序列化圖像JSON),這會告訴你如何從圖像通過Sitecore的CMS添加的所有屬性:

public class DataItemImage 
{ 
    public string ID { get; set; } 
    public string Source { get; set; } 
    public string Width { get; set; } 
    public string Height { get; set; } 
    public string Alt { get; set; } 

    public DemoDataItemImage(Sitecore.Data.Fields.ImageField obj) 
    { 
     string mediaUrl = Sitecore.Resources.Media.MediaManager.GetMediaUrl(obj.MediaItem); 
     ID = obj.MediaItem.ID.ToString(); 
     Source = mediaUrl; 
     Width = obj.Width; 
     Height = obj.Height; 
     Alt = obj.Alt; 
    } 
} 

我已經加入AltID參數爲好。還有其他類似ClassBorder,但由於這些東西可以在前端(HTML + CSS)中設置,所以我沒有添加它們。

如果要輸出這個類作爲一個JSON,設置你的控制器行動回報JsonResult,並添加以下行(其中objDataItemImage類的一個實例):

return Json(obj, JsonRequestBehavior.AllowGet); 

我希望這將有助於其他Sitecore開發者也是如此。

+0

請標記您的答案是正確的。 – 2013-02-19 14:50:17

+0

我會,但我不能在2天內。另外我會編輯它以提供如何獲得寬度和高度的信息,就像我的問題一樣。 – Karol 2013-02-19 22:36:15

+2

如果您需要特定的高度/寬度圖像,那麼您可以在'mh'和'mw'參數中添加URL,Sitecore會爲您提供縮放圖像。對縮略圖等有用 – jammykam 2013-02-20 02:38:48