Переопределить ScriptControl или BaseValidator для асинхронного элемента проверки ASP.NET? - PullRequest
4 голосов
/ 08 сентября 2008

Я планирую разработать серверный элемент управления ASP.NET, чтобы обеспечить асинхронную проверку доступности имени пользователя для регистрации новых пользователей. Элемент управления позволит разработчику указывать на текстовое поле «имя пользователя» и будет указывать, доступно ли имя пользователя. Как и этот пример , но без неуклюжей панели обновления.

Одно из дизайнерских решений, которое вызывает у меня головную боль, - наследовать ли от ScriptControl или BaseValidator .

Реализуя его как ScriptControl , я могу упростить работу на стороне клиента и легко локализовать его с помощью resx.

Однако я хочу убедиться, что валидатор работает правильно по отношению к Page.IsValid. Единственный известный мне способ сделать это - переопределить BaseValidator и реализовать EvaluateIsValid().

Итак, мой вопрос: как бы вы предложили структурировать этот элемент управления? Является ли наследование от BaseValidator лучшим (единственным) способом получить правильную часть валидатора, или я могу сделать это другим способом?

1 Ответ

4 голосов
/ 08 сентября 2008

У вас должно получиться и то, и другое, если вы реализуете интерфейс IScriptControl , а также производные от BaseValidator:

public class YourControl : IScriptControl, BaseValidator

Для реализации интерфейса IScriptControl необходимо, чтобы ваш элемент управления также имел методы GetScriptReferences и GetScriptDescriptors.

...