Автор: Dflying Chen ( http://dflying.cnblogs.com/ )
PS: Благодаря всеобщей любви, за те два месяца, что я поселился в блог-парке, я многому научился, завел много друзей и получил много возможностей. В настоящее время я имею честь перевести книгу Atlas: Основы Atlas: Rapid Ajax Development with ASP.NET 2.0, которая, как ожидается, будет опубликована издательством People's Posts and Telecommunication через три месяца. Поэтому я был очень занят в этот период, и блог не может обновляться так часто, как некоторое время назад. Приношу свои извинения. Конечно, друзья могут продолжить обсуждение вопросов, связанных с Атласом, и я постараюсь на них ответить.
В ближайшие два месяца я надеюсь стремиться к совершенству в переводе «Основ Атласа», поэтому обязательно возникнет множество вопросов, которые необходимо обсудить с друзьями, например, терминология, стиль перевода и т. д. Заранее спасибо здесь!
В предыдущей статье (см.: Разработка элемента управления расширения на стороне сервера ASP.NET Atlas — написание поведения на стороне клиента) мы уже написали поведение на стороне клиента. В этой статье давайте завершим его и запустим как серверный элемент управления.
Сначала перейдите к файлу ValidateUserNameProperties.cs. Этот класс наследуется от базового класса TargetControlPropertiesBase<Control>, который определяет связь между значениями свойств клиента и значениями свойств сервера. В то же время базовый класс TargetControlPropertiesBase<Control> и Atlas Control Extender уже выполнили за вас работу по созданию XML-скрипта на стороне клиента. Вам нужно только определить атрибуты, необходимые для вашего поведения.
Следует добавить пять атрибутов: CheckResultLabelID, ServiceName, MethodName, ValidMessage и InvalidMessage. Для простоты я привожу только пример атрибута
[DefaultValue("")]
[IDReferenceProperty(typeof(WebControl))]
[ТребуемоеСвойство()]
общедоступная строка CheckResultLabelID
{
получать
{
return GetPropertyStringValue("CheckResultLabelID");
}
набор
{
SetPropertyStringValue("CheckResultLabelID", значение);
}
}
Определению CheckResultLabelID предшествуют три атрибута:
DefaultValue: установите значение по умолчанию для этого атрибута.
IDReferenceProperty: указывает, что это свойство может хранить только идентификатор определенного типа элемента управления.
RequiredProperty: указывает, что это свойство является обязательным.
Для получения информации о некоторых других свойствах вы можете обратиться к исходным файлам, предоставленным позже.
Затем взгляните на файл ValidateUserNameExtender.cs. Его основные части следующие:
[Designer(typeof(ValidateUserNameDesigner))].
[ClientScriptResource("Dflying", "ValidateUserNameBehavior", "Dflying.Atlas.ControlTookit.ValidateUserName.ValidateUserNameBehavior.js")]
[RequiredScript(typeof(ValidateUserNameExtender))]
общедоступный класс ValidateUserNameExtender: ExtenderControlBase<ValidateUserNameProperties, Control>
{
}
Среди них наш ValidateUserNameExtender наследует базовый класс ExtenderControlBase<ValidateUserNameProperties, Control> и получает некоторые общие операции. К классу применяются три атрибута:
Конструктор: укажите имя класса конструктора этого расширителя (используется для обеспечения поддержки во время разработки).
ClientScriptResource: указывает информацию, необходимую для создания клиентских XML-скриптов Atlas. Dflying и ValidateUserNameBehavior здесь должны соответствовать тем, которые определены в предыдущем ValidateUserNameBehavior.js.
RequiredScript: укажите сценарий, необходимый клиенту, чтобы Atlas связал ValidateUserNameBehavior.js со страницей в виде файла axd.
Наконец, есть файл ValidateUserNameDesigner.cs, в который можно добавить поддержку во время разработки. Пусть ваш элемент управления будет иметь разные стили отображения с разными значениями свойств, установленными в Visual Studio. Для упрощения я не буду добавлять поддержку во время разработки.
На данный момент наш расширитель написан, и DLL, созданную после сборки выпуска, можно использовать напрямую. В следующей статье я продемонстрирую использование этого Extender в реальной программе.