asp.net-mvc-3 - 如何从 Sitecore MediaItem 获取图像参数?

标签 asp.net-mvc-3 sitecore sitecore6

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

我完成了 this question 中的所有步骤.但是建议的方法允许您使用 View Helper 获取图像标签,并且仅在 View 上下文中。因为我不能(并且真的不想,因为它真的很糟糕)在 Controller 中创建 HTMLHelper 我无法在那里生成它。

This method无论我在 web.config 文件中设置什么,只给我 *.ashx 的路径。所以我有这个 *.ashx URL( /~/media/5EE32493443547ED8DB0B26166209C85.ashx )但我不能利用它并生成正常的 *.jpg URL,即 /~/media/001FC62786B044F5888640C7164ED72F.JPG .

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

此外,当我将 *.ashx URL 粘贴到浏览器中时,服务器响应无法找到资源的异常。

最佳答案

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

string mediaUrl = Sitecore.Resources.Media.MediaManager.GetMediaUrl(item);
item应该是 Sitecore.Data.Items.MediaItem 的对象类(class)。
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,请将 Controller 操作设置为返回 JsonResult ,并添加这一行(其中 objDataItemImage 类的实例):
return Json(obj, JsonRequestBehavior.AllowGet);

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

关于asp.net-mvc-3 - 如何从 Sitecore MediaItem 获取图像参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14948653/

相关文章:

Azure App Service 随机给出 SSL 连接错误

sitecore - 关于 Sitecore 备份

asp.net-mvc-3 - 如何处理MVC3中的异常?

c# - 在 ASP.NET MVC3 中使用 C# 填充 Word 模板

asp.net - 这个属性 "headerindex="5h"是什么?

sitecore - Glass Mapper RenderLink 双引号

null - Sitecore.Context.Item 回发时为 NULL

sitecore - 在 Sitecore 中,如何基于现有项目创建新项目

asp.net-mvc-3 - 迭代时使用 Html.HiddenFor

javascript - MVC3 AJAX 将数据传递到 Controller 。已提交两次