Вы уже знаете, как создавать Razor-функции в Composite C1 версии 4.0. Вы можете создать такую функцию в админке или в Visual Studio.
Параметром в Razor-функции будет любое публичное свойство, объявленное в директиве @function.
Такой параметр будет иметь такое же название, как и название свойства (Title), а его тип (string) определит, какой именно виджет будет использоваться (по умолчанию - TextBox) для указания значения параметра при вставке этой функции в контент.
Что касается виджетов, то практически каждый тип, который вы можете использовать для объявления публичного свойства, т.е. добавления параметра, имеет виджет по умолчанию. Например, если вы объявляете свойство типа DataReference<IImageFile>, его виджетом будет MediaFileSelector.
Если вы хотите добавить описание (справку) к параметру или задать значение по умолчанию, то вам нужно добавить атрибут FunctionParameter к такому параметру, и используя параметры атрибута, настроить параметр Razor-функции, как вам нужно.
Кроме описания и значения по умолчанию, с помощью атрибута FunctionParameter, вы можете также задать другой виджет для параметра и указать надпись для параметра, которая будет отличаться от имени свойства.
Следующие параметры атрибута вы можете использовать для настройки параметра Razor-функции:
В следующем сообщении мы подробнее остановимся на замене виджетов для параметров.
Как и любые другие функции в Composite C1, Razor-функции могут иметь входные параметры.
Создание Razor-функций отличается от создания тех же XSLT-функций, где вы добавляете параметры в редакторе функций. И добавление параметров в Razor-функциях тоже имеет свои особенности.
Добавление параметров в Razor-функциях
Параметром в Razor-функции будет любое публичное свойство, объявленное в директиве @function.
@functions{
public string Title { get; set; }
public string Description { get; set; }
}
public string Title { get; set; }
public string Description { get; set; }
}
Такой параметр будет иметь такое же название, как и название свойства (Title), а его тип (string) определит, какой именно виджет будет использоваться (по умолчанию - TextBox) для указания значения параметра при вставке этой функции в контент.
Что касается виджетов, то практически каждый тип, который вы можете использовать для объявления публичного свойства, т.е. добавления параметра, имеет виджет по умолчанию. Например, если вы объявляете свойство типа DataReference<IImageFile>, его виджетом будет MediaFileSelector.
Настройка параметров в Razor-функциях
Если вы хотите добавить описание (справку) к параметру или задать значение по умолчанию, то вам нужно добавить атрибут FunctionParameter к такому параметру, и используя параметры атрибута, настроить параметр Razor-функции, как вам нужно.
Кроме описания и значения по умолчанию, с помощью атрибута FunctionParameter, вы можете также задать другой виджет для параметра и указать надпись для параметра, которая будет отличаться от имени свойства.
Следующие параметры атрибута вы можете использовать для настройки параметра Razor-функции:
- Label: Надпись, дружественное пользователю название параметра, показывающееся в Свойствах функции.
- Help: Справка по параметру, описание параметра, тоже появляющееся в Свойствах функции.
- DefaultValue: Значение по умолчанию.
- WidgetFunctionName: Название функции виджета для параметра.
- WidgetMarkup: XML-код виджета для параметра.
- WidgetFactoryMethod: фабричный метод для нестандартного виджета для параметра.
@functions {
public string Title { get; set; }
[FunctionParameter(Label = "Описание",
Help = "Краткое описание объекта",
DefaultValue = "Назначение объекта - ...",
WidgetMarkup = "<f:widgetfunction name='Composite.Widgets.String.TextArea' xmlns:f='http://www.composite.net/ns/function/1.0'><f:param name='SpellCheck' value='true' /></f:widgetfunction>")]
public string Description { get; set; }
}
public string Title { get; set; }
[FunctionParameter(Label = "Описание",
Help = "Краткое описание объекта",
DefaultValue = "Назначение объекта - ...",
WidgetMarkup = "<f:widgetfunction name='Composite.Widgets.String.TextArea' xmlns:f='http://www.composite.net/ns/function/1.0'><f:param name='SpellCheck' value='true' /></f:widgetfunction>")]
public string Description { get; set; }
}
В следующем сообщении мы подробнее остановимся на замене виджетов для параметров.
Комментариев нет:
Отправить комментарий