4

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

我做了这个问题的所有步骤。但是建议的方法允许您使用 View Helper 获取图像标签,并且只能在视图上下文中。由于我不能(而且真的不想这样做,因为这是非常糟糕的做法)在 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 粘贴到浏览器中时,服务器响应异常,即找不到资源。

4

1 回答 1

5

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

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参数。还有其他的like Classand Border,但是由于这些东西可以在前端设置(HTML + CSS),所以我没有添加它们。

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

return Json(obj, JsonRequestBehavior.AllowGet);

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

于 2013-02-19T03:43:40.240 回答