Доступ к свойствам Sitecore для поля изображения в пользовательском элементе управления Code-behind - PullRequest
2 голосов
/ 21 января 2012

Я хочу получить доступ к (а затем изменить) свойства для поля изображения (s) в Sitecore (особенно интересуется флажками «Размеры» и «Сохранить соотношение») через файл с выделенным кодом (blah.ascx.cs). [Это гарантирует, что все изображения имеют одинаковый размер при отображении в подуровнях (независимо от исходного размера)]

Я знаю, что эти свойства могут быть добавлены вручную, но в случае, когда авторы контента "забывают" добавить размеры для изображений, я не хочу, чтобы мои подуровни испортились. Следовательно, мне нужен чек для этого.

Есть ли способ получить доступ и затем изменить эти свойства с помощью кода?

Вот изображение, которое показывает, что именно я хочу получить доступ и изменить через код:

enter image description here

Ответы [ 3 ]

5 голосов
/ 21 января 2012

Если вы используете <asp:Image ... /> и связываете ImageUrl через C #, вы можете получить доступ к ImageField в C # и получить свойства, например:

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 ... />, поскольку параметры изображения работают только на этом, , как описано здесь .

Вот пример фрагмента:

<sc:FieldRenderer FieldName="My Image Field" Parameters="w=100&h=200&as=1" runat="server" />
1 голос
/ 21 января 2012

Не уверен на 100% (не могу проверить здесь), но если вы извлечете поле как ImageField, вы сможете получить доступ к этим значениям.

var cur = Sitecore.Context.Item;
Sitecore.Data.Fields.ImageField imgfield = cur.Fields["imagefieldname"] as Sitecore.Data.Fields.ImageField;
//imgfield.<properties>
1 голос
/ 21 января 2012

Это гарантирует, что все изображения имеют одинаковый размер при отображении в подуровнях (независимо от исходного размера

Я бы предложил использовать класс FieldRenderer или для рендеринга таких полей в подслоях, а затем укажите параметры " mh " (максимальная высота) и " mw " (максимальная ширина), чтобы они всегда вписывались в макет.

Подробнее о параметрах можно прочитать здесь - http://sdn.sitecore.net/Articles/XSL/5%203%20Enhancements/Image%20Enhancements.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...