Я создал некоторые пользовательские текстовые поля, которые унаследованы от текстового поля. Для следующего шага я хочу зарегистрировать javascript с помощью обертки.Использование шаблона декоратора для элементов управления asp.net
Декоратор шаблон позволяет мне делать, если только я могу наследовать его из текстового поля и передавать пользовательские текстовые поля в качестве параметра конструктора.
Проблема заключается в том, как я могу использовать конструктор при добавлении элемента управления на страницу aspx или в основном как использовать шаблон декоратора для элементов управления asp.net.
EDIT:
Просто это моя проверка базового класса (Ifield является интерфейсом проверки Это может быть проигнорировано.):
public abstract class ValidationBase : TextBox, IField
{
private readonly IField _field;
protected ValidationBase(IField field)
{
_field = field;
}
public int MinLength
{
get { return _field.MinLength; }
set { _field.MinLength = value; }
}
public bool Required
{
get { return _field.Required; }
set { _field.Required = value; }
}
// other porperties etc...
protected override void OnPreRender(EventArgs e)
{
// DO SOME STUFF...
base.OnPreRender(e);
}
}
И это мой конкретный класс (EmailField является конкретным осущ. из Ifield игнорировать ...):
public class ValidationEmail : ValidationBase
{
public ValidationEmail()
: base(new EmailField(string.Empty))
{
}
}
И, наконец, я хочу, чтобы это реализовать (я решился на WordPad это не может быть точно реализ.):
public class JsRegisterDecorator : ValidationBase
{
private readonly ValidationBase _validationObj;
//I am not quite sure about the constructor but i can handle
public JsRegisterDecorator(ValidationBase concreteValidationObj)
: base(concreteValidationObj)
{
_validationObj = concreteValidationObj;
}
//Wrap the properties
protected override void OnPreRender(EventArgs e)
{
//Register JS Files...
_validationObj.OnPreRender(e);
}
}
Проблема в том, что я могу использовать этот декоратор? Поскольку элементы управления asp.net конструкт автоматически: (?, Где можно поставить параметр конструктора)
<vc:ValidationEmail ID="ValidationEmail1" runat="server"/>
Я не знаю, я могу использовать это:
<vc:JsRegisterDecorator ID="ValidationEmailWithJs1" runat="server"/>
Не могли бы вы рассказать о своем конкретном сценарии? Что вы хотите достичь с помощью шаблона Decorator, применяемого для контроля, что вы пытались сделать или пытались? –
@AlexanderManekovskiy Спасибо за комментарий. Я обновил свой вопрос. – pilavust