我需要在构建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网址粘贴到浏览器中时,服务器会回复,但无法找到资源。
答案 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;
}
}
我也添加了Alt
和ID
参数。还有其他类似的Class
和Border
,但由于这些内容可以设置在前端(HTML + CSS),所以我没有添加它们。
如果要将此类作为Json输出,请将控制器操作设置为返回JsonResult
,然后添加此行(其中obj
是DataItemImage
类的实例):< / p>
return Json(obj, JsonRequestBehavior.AllowGet);
我希望它也可以帮助其他Sitecore开发人员。