我想在 Sitecore 访问(然后修改)图像字段的属性 >(特别是对'Dimensions'和'Keep Ratio'复选框感兴趣)通过代码隐藏文件(blah.ascx.cs)。 [这可确保所有图像在子布局中显示时具有一致的大小(与原始大小无关)]
我知道可以手动添加这些属性,但是对于内容作者“忘记”添加图像尺寸的情况,我不希望我的子布局搞砸了。因此,我需要检查一下。
有没有办法通过代码访问然后修改这些属性?
这是一张图片,通过代码准确显示我想要访问和修改的内容:
答案 0 :(得分:5)
如果您使用<asp:Image ... />
并通过C#绑定ImageUrl
,则可以访问C#中的ImageField
并获取属性,如下所示:
Sitecore.Data.Fields.ImageField field = item.Fields["My Image Field"];
// you can now access:
// field.Width
// field.Height etc...
如果您使用的是<sc:Image ... />
渲染器或常规<sc:FieldRenderer ... />
,我建议您使用<sc:FieldRenderer ... />
,因为图片参数仅适用于as documented here。
以下是一个示例代码段:
<sc:FieldRenderer FieldName="My Image Field" Parameters="w=100&h=200&as=1" runat="server" />
答案 1 :(得分:1)
这可确保所有图像在子布局中显示时具有一致的大小(与原始大小无关)
我建议使用FieldRenderer类,或&lt; sc:image&gt; 在子布局中渲染此类字段,然后指定“ mh ”(最大高度)和“ mw ”(最大宽度)参数,因此它们将始终适合布局。
您可以在此处详细了解参数 - http://sdn.sitecore.net/Articles/XSL/5%203%20Enhancements/Image%20Enhancements.aspx
答案 2 :(得分:1)
不是100%肯定(无法在此处查看),但如果您将字段检索为ImageField,则应该能够访问这些值。
var cur = Sitecore.Context.Item;
Sitecore.Data.Fields.ImageField imgfield = cur.Fields["imagefieldname"] as Sitecore.Data.Fields.ImageField;
//imgfield.<properties>