Учитывая, что метод проверки на стороне сервера topic_ServerValidate
специально привязан к полю checkboxlistCategories
, вам не нужно устанавливать свойство ControlToValidate
.
Причиной того, что он «взрывается» при добавлении свойства ControlToValidate
, является тип элемента управления, на который вы ссылаетесь - a CheckBoxList
. При назначении ControlToValidate
любому виду валидатора этот валидатор автоматически выполнит «непустую» проверку ссылочного элемента управления перед выполнением действительной логики валидации. Если поле пустое, проверка не будет выполнена (то есть проверка прошла успешно). Это, конечно, если вы не установите ValidateWhenEmpty = true
. По-видимому, валидаторы не знают, как проверить, является ли CheckBoxList
пустым, и вместо этого выдают исключение.
В вашем конкретном случае, когда CustomValidator
действительно просто служит непустой проверкой, вы определенно хотите, чтобы валидатор выполнялся, даже если указанный элемент управления оставлен "пустым". Как указано в первом абзаце моего ответа, самый простой способ добиться этого - удалить оскорбительное и ненужное свойство.