Пользовательские веб-элементы управления и проверки - PullRequest
11 голосов
/ 11 декабря 2008

У меня есть веб-элемент управления ASP.Net, который содержит TextBox и календарь из Ajax Control Toolkit.

Когда я включаю этот пользовательский элемент управления на своей странице, я бы хотел, чтобы он участвовал в проверке ввода (в TextBox внутри UC установлен обязательный полевой валидатор), т.е. когда страница проверена, содержимое UC также должно быть проверено. Поэтому в моем UC был реализован интерфейс IValidator, который работал хорошо, за исключением того, что я не мог установить группу проверки на пользовательском элементе управления. Очевидно, я должен наследовать от BaseValidator, чтобы сделать это, но я не могу, так как я уже наследую UserControl.

Должен быть способ справиться с этим распространенным сценарием.

Ответы [ 4 ]

13 голосов
/ 28 июня 2011

Вы можете ссылаться на элемент управления в пользовательском элементе управления, разделяя два знака доллара:

<asp:RequiredFieldValidator ControlToValidate="MyUserControl$ControlId" runat="server" />
10 голосов
/ 11 декабря 2008

Создайте свойство в вашем новом пользовательском элементе управления, который устанавливает группу проверки для содержащегося в нем валидатора. Затем из вашей разметки все, что вам нужно сделать, это просто установить свойство ValidationGroup в элементе управления, и это перейдет к валидаторам, содержащимся в элементе управления пользователя. Вероятно, вам не нужен интерфейс или наследование от BaseValidator, если вы не создаете JUST пользовательский элемент управления для проверки.

public string ValidationGroup
{
   get
   {
      return MyRequiredFieldValidator.ValidationGroup;
   }
   set
   {
      MyRequiredFieldValidator.ValidationGroup = value;
   }
}
3 голосов
/ 11 декабря 2008

Попробуйте добавить [ValidationProperty("NameOfPropertyToBeValidated") в свой класс управления пользователями.

0 голосов
/ 11 декабря 2008

Если вы планируете добавить много проверок в будущем, возможно, стоит окупиться за DES (Data Entry Suite) Питера Блума - он имеет множество улучшенных элементов управления для ввода и проверки данных, включая условную проверку сценарии и тот, который вы описываете. Лицензирование очень разумно по сравнению со временем, необходимым для его разработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...