nhibernate.validator & x.Val & jQuery с пользовательскими валидаторами - PullRequest
0 голосов
/ 06 августа 2009

Я играл с 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"}]},

Он прикрепляет обязательный валидатор поля, но не пользовательский.

Может ли кто-нибудь помочь мне с этим? Это довольно важный ключ функциональности!

Спасибо!

Ответы [ 2 ]

0 голосов
/ 17 ноября 2009

В итоге я отказался от этого и использовал некоторые правила удаленной проверки, которые были добавлены в новейшей версии XVal.

0 голосов
/ 09 октября 2009

Убедитесь, что вы не звоните xVal.ActiveRuleProviders.Providers.Clear() или, если вы это сделаете, убедитесь, что вы добавили CustomRulesProvider, как это xVal.ActiveRuleProviders.Providers.Add(new xVal.RuleProviders.CustomRulesProvider())

...