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





Создайте свойство в вашем новом пользовательском элементе управления, которое устанавливает группу проверки на содержащемся валидаторе. Затем из вашей разметки все, что вам нужно сделать, это просто установить свойство ValidationGroup в элементе управления, и это перейдет к валидаторам, содержащимся в пользовательском элементе управления. Скорее всего, вам не понадобится интерфейс или наследование от BaseValidator, если вы не создаете ТОЛЬКО проверочный пользовательский элемент управления.
public string ValidationGroup
{
get
{
return MyRequiredFieldValidator.ValidationGroup;
}
set
{
MyRequiredFieldValidator.ValidationGroup = value;
}
}
Попробуйте добавить [ValidationProperty("NameOfPropertyToBeValidated") в свой класс пользовательского элемента управления.
Если вы планируете добавить много проверок в будущем, возможно, стоит попробовать DES Питера Блюма (Data Entry Suite) - он имеет множество расширенных элементов управления для ввода и проверки данных, включая сценарии условной проверки и тот, который вы описываете. Лицензирование очень разумно по сравнению со временем, необходимым для его самостоятельной разработки.
Вы можете ссылаться на элемент управления в пользовательском элементе управления, разделив их знаком доллара:
<asp:RequiredFieldValidator ControlToValidate = "MyUserControl$ControlId" runat = "server" />
Касса: Как проверить UserControl?