Я играл с nhibernate.validator и xVal и JQuery, и они довольно хорошо работают вместе, пока я не попробую использовать собственные валидаторы. Согласно стороне кодекса xVal пользовательские валидаторы поддерживаются, если они реализуют интерфейс ICustomRule. и вы предоставляете функцию ToCustomRule, которая возвращает customRule с именем функции Javascript, которая будет выполнять проверку на стороне клиента.
Мой валидатор используется на стороне сервера, но он не привязывается к полю на стороне клиента.
вот важные части кода:
Свойство, которое проверяется:
_
Public Property Password() As String
Get
Return m_Password
End Get
Set(ByVal value As String)
m_Password = value
End Set
End Property
Пользовательский валидатор:
Imports NHibernate.Validator.Engine
Imports xVal.RuleProviders
Imports xVal.Rules
_
_
Public Class PasswordValidationAttribute
Inherits Attribute
Implements IRuleArgs
Private m_Message As String = "Password and Confirm Password must be the same"
Public Property Message() As String Implements NHibernate.Validator.Engine.IRuleArgs.Message
Get
Return m_Message
End Get
Set(ByVal value As String)
m_Message = value
End Set
End Property
End Class
Public Class PasswordValidator
Implements IValidator, ICustomRule
Public Function IsValid(ByVal value As Object) As Boolean Implements NHibernate.Validator.Engine.IValidator.IsValid
Dim valid As Boolean = True
Dim val As String = CType(value, String)
If val = "hello" Then
valid = True
Else
valid = False
End If
Return valid
End Function
Public Function ToCustomRule() As xVal.Rules.CustomRule Implements xVal.RuleProviders.ICustomRule.ToCustomRule
Return New CustomRule("ValidatePassword", Nothing, "Password and Password Confirmation must Match")
End Function
End Class
и это важная часть того, что генерируется в источнике html.ClientSideValidation (пользователя)
{"FieldName":"Password","FieldRules":[{"RuleName":"Required","RuleParameters":{},"Message":"Password is Required"}]},
Он прикрепляет обязательный валидатор поля, но не пользовательский.
Может ли кто-нибудь помочь мне с этим? Это довольно важный ключ функциональности!
Спасибо!