среда, 19 июня 2013 г.

Razor в Composite C1 CMS 4.0 (4): Параметры Razor-функций

Вы уже знаете, как создавать Razor-функции в Composite C1 версии 4.0. Вы можете создать такую функцию в админке или в Visual Studio.

Как и любые другие функции в Composite C1, Razor-функции могут иметь входные параметры. 

Создание Razor-функций отличается от создания тех же XSLT-функций, где вы добавляете параметры в редакторе функций. И добавление параметров в Razor-функциях тоже имеет свои особенности.


Добавление параметров в Razor-функциях



Параметром в Razor-функции будет любое публичное свойство, объявленное в директиве @function.

@functions{
  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: фабричный метод для нестандартного виджета для параметра.
В примере ниже, второй параметр Description настроен с помощью атрибута FunctionParameter. Надпись дана по-русски, добавлено описание параметра и указано значение по умолчанию. К тому же, виджет по умолчанию для типа String - TextBox, заменен на другой виджет - TextArea.

@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; }
}


В следующем сообщении мы подробнее остановимся на замене виджетов для параметров.

Комментариев нет:

Отправить комментарий