如何从Sitecore MediaItem获取图像参数?

时间:2013-02-19 02:08:05

标签: asp.net-mvc-3 sitecore sitecore6

我需要在构建json feed时读取控制器中的图像参数(源,宽度,高度)。

我从this question做了所有步骤。但建议的方法允许您使用View Helper获取图像标记,并且仅在视图上下文中。由于我不能(并且真的不想,因为这是非常糟糕的做法)在控制器中创建HTMLHelper,我无法在那里生成它。

This method只给我* .ashx的路径,无论我在web.config文件中设置什么。我有这个* .ashx网址(/~/media/5EE32493443547ED8DB0B26166209C85.ashx),但我无法利用它并生成普通的* .jpg网址,即/~/media/001FC62786B044F5888640C7164ED72F.JPG

* .ashx网址中包含ID(5EE32493-4435-47ED-8DB0-B26166209C85),但* .jpg没有...

此外,当我将* .ashx网址粘贴到浏览器中时,服务器会回复,但无法找到资源。

1 个答案:

答案 0 :(得分:4)

经过一段时间的搜索和尝试,并测试了众多选项,我找到了非常简单的解决方案:

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

item应该是Sitecore.Data.Items.MediaItem类的对象。

mediaUrl变量具有以下值:/~/media/001FC62786B044F5888640C7164ED72F.JPG

基于这个简单的方法,我回过头来讨论Width和Height,我编写了简单的类(以便将图像序列化为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类的实例):< / p>

return Json(obj, JsonRequestBehavior.AllowGet);

我希望它也可以帮助其他Sitecore开发人员。