2009-10-13 51 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