При использовании внешних C# функций с параметрами, для каждого параметра можно задать дружеское пользователю название (label) параметра, описание параметра и значение по умолчанию.
Вплоть до последней версии 3.1 все это можно было сделать при помощи специального атрибута FunctionParameterDescription. Начиная с будущей версии 3.2 (и уже в последних бета-версиях), этот атрибут будет уже устаревшим, а вместо него нужно будет пользоваться более удобным FunctionParameter, а также с помощью атрибута Function можно будет задать описание и самой функции.
Функция
Описание функции задается в параметре Description атрибута Function:
Вплоть до последней версии 3.1 все это можно было сделать при помощи специального атрибута FunctionParameterDescription. Начиная с будущей версии 3.2 (и уже в последних бета-версиях), этот атрибут будет уже устаревшим, а вместо него нужно будет пользоваться более удобным FunctionParameter, а также с помощью атрибута Function можно будет задать описание и самой функции.
Функция
Описание функции задается в параметре Description атрибута Function:
using System;
using Composite.Functions;
namespace Demo
{
[Function(Description="Возвращает текущую дату в полном формате")]
public class Functions
{
public static string CurrentDate()
{
return DateTime.Now.ToLongDateString();
}
}
}
using Composite.Functions;
namespace Demo
{
[Function(Description="Возвращает текущую дату в полном формате")]
public class Functions
{
public static string CurrentDate()
{
return DateTime.Now.ToLongDateString();
}
}
}
Параметры
При помощи атрибута FunctionParameter можно задать дополнительную информацию для параметра внешней C# функции.
Первым параметром у него всегда будет Name, в котором указывается собственно название параметра функции.
А вторым может быть один из таких параметров:
- Label (ярлык): дружественное пользователю название параметра
- Help (справка): текст описания параметра
- DefaultValue (значение по умолчанию): значение, которое следует использовать по умолчанию
- WidgetMarkup (код-разметка виджета): код-разметка виджета, который нужно использовать вместо виджета, используемого по умолчанию для такого типа параметра.
using System;
using Composite.Functions;
namespace Demo
{
public class Functions
{
[FunctionParameter(Name="text", Label="Text")]
[FunctionParameter(Name="text", Help="Текст, который нужно показать")]
[FunctionParameter(Name="text", Default="Здравствуй, мир!")]
[FunctionParameter(Name="text", WidgetMarkup=
@"<f:widgetfunction name='Composite.Widgets.String.TextArea' xmlns:f='http://www.composite.net/ns/function/1.0' />")]
public static string ShowText(string text)
{
return text;
}
}
}
Если первые три параметры понятны, то последний параметр требует небольшого уточнения. В этом параметре нужно указать XML-код того виджета, который хочется использовать (например TextArea, вместо TextBox) с обязательным указанием пространства имен. Если виджет поддерживает параметры, то их тоже можно включать в этот параметр.
[FunctionParameter(Name = "text", WidgetMarkup =
@"<f:widgetfunction name="Composite.Widgets.String.TextBox" xmlns:f="http://www.composite.net/ns/function/1.0" ><f:param name="SpellCheck" value ="False" /></f:widgetfunction>")]
@"<f:widgetfunction name="Composite.Widgets.String.TextBox" xmlns:f="http://www.composite.net/ns/function/1.0" ><f:param name="SpellCheck" value ="False" /></f:widgetfunction>")]
Если вы не уверены в XML-коде виджета, его можно подсмотреть:
- В разделе "Функции", раскрываем "Все виджет-функции"
- Раскрываем пространства имен нужного виджета, напр., Composite / Widgets / String
- Выбираем нужный виджет, напр. TextArea
- Нажимаем кнопку "Информация".
- В правой части смотрим под Function Markup.
Напомню, что эти атрибуты будут доступны в предстоящей новой версии 3.2, и их можно уже "пощупать", скачав последнюю сборку с CodePlex или установив последнюю бета-версию через Web Platform Installer.
Немного неточно, атрибут FunctionParameter нужно помещать в метод (http://docs.composite.net/ASP-NET/CSharpFunctions/Creating-External-C-Functions)
ОтветитьУдалитьСпасибо. Поправил.
Удалить