在构建 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;
}
}
我已添加
Alt
和 ID
参数也一样。还有其他像Class
和 Border
,但是由于这些东西可以在前端设置(HTML + CSS),所以我没有添加它们。如果要将此类输出为 Json,请将 Controller 操作设置为返回
JsonResult
,并添加这一行(其中 obj
是 DataItemImage
类的实例):return Json(obj, JsonRequestBehavior.AllowGet);
我希望它也能帮助其他 Sitecore 开发人员。
关于asp.net-mvc-3 - 如何从 Sitecore MediaItem 获取图像参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14948653/