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

Kar*_*rol 4 sitecore sitecore6 asp.net-mvc-3

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

我从这个问题中采取了所有步骤。但是建议的方法允许您使用View Helper来获取图像标签,并且仅在View上下文内部。由于我不能(而且实际上是不想要的,因为这确实是一种不好的做法),所以我无法在Controller中创建HTMLHelper。

无论我在web.config文件中设置了什么,此方法都只给我* .ashx的路径。所以我有这个* .ashx URL(/~/media/5EE32493443547ED8DB0B26166209C85.ashx),但是我无法利用它来生成普通的* .jpg URL,即/~/media/001FC62786B044F5888640C7164ED72F.JPG

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

另外,当我将* .ashx URL粘贴到浏览器中时,服务器响应,但找不到资源。

Kar*_*rol 5

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

string mediaUrl = Sitecore.Resources.Media.MediaManager.GetMediaUrl(item);
Run Code Online (Sandbox Code Playgroud)

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经加入AltID参数也是如此。还有其他like ClassBorder,但是由于可以在前端(HTML + CSS)中进行设置,因此我没有添加它们。

如果要将此类作为Json输出,请将控制器操作设置为return JsonResult,并添加以下行(其中objDataItemImage类的实例):

return Json(obj, JsonRequestBehavior.AllowGet);
Run Code Online (Sandbox Code Playgroud)

我希望它也会对其他Sitecore开发人员有所帮助。

  • 如果您需要特定的高度/宽度图像,则可以在URL中添加`mh`和`mw`参数,Sitecore将为您提供缩放后的图像。对缩略图等有用 (2认同)