2009-08-06 8 views
0

나는 nhibernate.validator와 xVal 및 JQuery로 놀았으며 사용자 정의 유효성 검사기를 갖기 전까지는 아주 잘 작동합니다. xVal codeplex 측에 따르면 ICustomRule 인터페이스를 구현하면 사용자 정의 유효성 검사기가 지원됩니다. 클라이언트 측 유효성 검사를 수행 할 Javascript 함수의 이름을 가진 customRule을 반환하는 ToCustomRule 함수를 제공합니다.nhibernate.validator & x.Val & jQuery with custom validators

유효성 검사기가 서버 측에서 사용되고 있지만 클라이언트 측 필드에 연결되지 않습니다.

확인되는 속성 :

 

_ 
    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"}]}, 
 

필수 필드 유효성 검사기를 연결했지만 사용자 정의 값은 첨부하지 않았습니다.

아무도 도와 줄 수 있습니까? 꽤 중요한 기능입니다.

감사합니다!

답변

0

같은 CustomRulesProvider를 추가 보장하지는 확인합니다.

0

하면 xVal.ActiveRuleProviders.Providers.Clear() 전화하거나 당신이 할 경우, 당신은 내가이 죽겠다 및 경우 xval의 최신 버전에 추가 된 일부 원격 유효성 검사 규칙을 사용하여 결국이 xVal.ActiveRuleProviders.Providers.Add(new xVal.RuleProviders.CustomRulesProvider())