Подтвердить что ты не робот

Веб-пользовательские элементы управления и проверки

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

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

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

4b9b3361

Ответ 1

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

public string ValidationGroup
{
   get
   {
      return MyRequiredFieldValidator.ValidationGroup;
   }
   set
   {
      MyRequiredFieldValidator.ValidationGroup = value;
   }
}

Ответ 2

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

<asp:RequiredFieldValidator ControlToValidate="MyUserControl$ControlId" runat="server" />

Ответ 3

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

Ответ 4

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