Я использую кучу различных элементов управления проверкой asp.net в веб-форме. У некоторых из них свойство Text установлено на такие вещи, как «* Ошибка» или «Вы пропустили эти поля».
Однако некоторые элементы управления CustomValidator имеют пустые свойства Text. Я специально оставил их пустыми, потому что я добавляю сообщение об ошибке динамически в зависимости от того, в каком случае произошел сбой. (CustomValidator может иметь много разных условий, при которых я устанавливаю args.IsValid = false)
При возникновении ошибки свойство ErrorMessage, которое я установил, отображается как в ValidationSummary, так и внутри элемента управления Validator. Я не хочу этого. Я хочу иметь возможность просто покажите ErrorMessage в ValidationSummary, а не в свойстве BaseValidator.Text.
Моя первая попытка заключалась в том, чтобы установить для свойства Text значение пробела "". Это не сработало.
То, что я реализовал (на данный момент), - это точка, которая отображается тем же цветом, что и фон. Это хакер - и мне это не нравится. Черт возьми, может, поэтому я здесь!
Вот код:
<asp:CustomValidator ID = "StackOverflowValidator" runat = "server"
Text = "."
CssClass = "validatorstyle"
Display = "Dynamic"
OnServerValidate = "validate_AllowedToDoSomething"
ValidationGroup = "MainGroup" />
<asp:ValidationSummary ID = "mainGroupValidationSummary" runat = "server"
ValidationGroup = "MainGroup"
DisplayMode = "BulletList"
HeaderText = "There was an error in saving. Please check the following:" />
Внутри validate_AllowedToDoSomething я вызываю:
StackOverflowValidator.ErrorMessage = "Custom Error Message #1";
args.IsValid = false;
return;
Я получаю «Пользовательское сообщение об ошибке №1» дважды в веб-форме. Заранее спасибо!





Просто установите display = "none" вместо "dynamic" в BaseValidator, и это должно решить эту проблему.
Это сработало! Я также пробовал сделать его невидимым, но из-за этого проверка вообще не запускалась. Я предполагаю, что опция None в атрибуте Display была сделана именно по этой причине. Еще раз спасибо.