2009-10-13 52 views
3

据这里的NHibernate的验证文件:NHibernate的验证 - 通过资源管理器和关键

http://nhforge.org/wikis/validator/nhibernate-validator-1-0-0-documentation.aspx

我应该能够通过我的资源管理器,所以我可以利用它来进行验证错误消息。请参阅:

或者你可以提供一个ResourceManager同时检查程序的验证规则...

和:

如果NHibernate的验证无法解析您的ResourceManager也不是来自ValidatorMessage的关键,它会回落到默认的内置值。

它甚至可以显示和例子只是在做这在属性上的实体属性:

// a not null numeric string of 5 characters maximum 
    // if the string is longer, the message will 
    // be searched in the resource bundle at key 'long' 
    [Length(Max = 5, Message = "{long}")] 
    [Pattern(Regex = "[0-9]+")] 
    [NotNull] 
    public string Zip 
    { 

     get { return zip; } 
     set { zip = value; } 
    } 

然而,据我可以看到它没有规定如何通过资源管理器验证框架 - 有谁知道如何做到这一点?

谢谢!

+0

http://stackoverflow.com/questions/1404309/nhibernate-validator-how-to-validate-custom-properties – 2009-10-13 14:38:01

+0

@Jon,谢谢,我读过你对这个问题的建议 - 这很有趣,有趣,我会给它一些考虑。我仍然想知道如何做到这一点。 – UpTheCreek 2009-10-13 16:06:31

回答

1

看看this post并回答this SO question(它描述了使用消息插值器的一些疑难问题)。

希望这会帮助你。

+0

谢谢这很有用。但是,NHV文档表明它比编写自己的自定义消息插值器更简单:“或者,您可以在以编程方式检查验证规则时提供ResourceManager ...”,也许这些文档具有误导性? – UpTheCreek 2009-10-23 07:46:43

+0

'DefaultMessageInterpolator'具有方法'Initialize',它接受文化和资源管理器对 - 正常和回退。您可以将您的'ValidatorEngine.Interpolator'强制转换为'DefaultMessageInterpolator'并重新初始化它。 – 2009-10-23 16:23:36

+0

啊,我明白了 - 谢谢! – UpTheCreek 2009-10-24 12:05:01