Динамически создайте элемент управления CustomValidator и добавьте его непосредственно в коллекцию Page.Validators.
Dim err As New CustomValidator
err.ValidationGroup = "MyGroup"
err.IsValid = False
err.ErrorMessage = "The password is invalid"
Page.Validators.Add(err)
В отличие от добавления CustomValidator к разметке, этот метод позволяет добавлять любое количество произвольных сообщений об ошибках на основе бизнес-логики на стороне сервера.
Обратите внимание, что вы также можете добавить его на страницу напрямую, но есть несколько правил, которым нужно следовать:
- Необходимо добавить элемент управления в тот же контейнер именования, что и элементы управления группы проверки.
- Если вы не хотите, чтобы сообщение проверки появлялось в произвольной позиции на странице, вам нужно будет либо добавить валидатор в определенный контейнер, либо вам придется подавить его, используя класс или стиль CSS. *
Вы также можете создать пользовательский класс и реализовать IValidator , который позволяет добавлять сообщение одной строкой кода, но этот метод не поддерживает группы проверки.
Согласно предложению Андерса Фьелдстада, вот набор удобных методов расширения.
Imports Microsoft.VisualBasic
Imports System.Runtime.CompilerServices
Public Module PageExtensions
<Extension()> _
Public Sub AddValidationError(ByVal p As System.Web.UI.Page, ByVal errorMessage As String)
p.AddValidationError(errorMessage, String.Empty)
End Sub
<Extension()> _
Public Sub AddValidationError(ByVal p As System.Web.UI.Page, ByVal errorMessage As String, ByVal validationGroup As String)
Dim err As New CustomValidator
err.ValidationGroup = validationGroup
err.ErrorMessage = errorMessage
err.IsValid = False
p.Validators.Add(err)
End Sub
End Module