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粘贴到浏览器中时,服务器响应,但找不到资源。
经过一段时间的搜索和尝试,并测试了许多选项,我发现了一个非常简单的解决方案:
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)
我已经加入Alt和ID参数也是如此。还有其他like Class和Border,但是由于可以在前端(HTML + CSS)中进行设置,因此我没有添加它们。
如果要将此类作为Json输出,请将控制器操作设置为return JsonResult,并添加以下行(其中obj是DataItemImage类的实例):
return Json(obj, JsonRequestBehavior.AllowGet);
Run Code Online (Sandbox Code Playgroud)
我希望它也会对其他Sitecore开发人员有所帮助。
| 归档时间: |
|
| 查看次数: |
3069 次 |
| 最近记录: |