在用户控件的代码隐藏中访问Image字段的Sitecore属性

时间:2012-01-20 20:21:38

标签: sitecore sitecore6

我想在 Sitecore 访问(然后修改)图像字段属性 >(特别是对'Dimensions'和'Keep Ratio'复选框感兴趣)通过代码隐藏文件(blah.ascx.cs)。 [这可确保所有图像在子布局中显示时具有一致的大小(与原始大小无关)]

我知道可以手动添加这些属性,但是对于内容作者“忘记”添加图像尺寸的情况,我不希望我的子布局搞砸了。因此,我需要检查一下。

有没有办法通过代码访问然后修改这些属性?

这是一张图片,通过代码准确显示我想要访问和修改的内容:

enter image description here

3 个答案:

答案 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>