2017-01-23 12 views
4

私はWebアノテーションを使用してWeb API 2モデルを検証します。属性ベースの基本的な検証(RequiredRangeなど)では、カスタムModelMetadataProviderを注入してローカライズされたメッセージを簡単に提供できます。ここErrorMessageResourceNameを指定する方法はありませんように見えますIValidatableObject.Validate()のローカライズ

public class ValidationResult 
{ 
    public ValidationResult(string errorMessage); 
    public ValidationResult(string errorMessage, IEnumerable<string> memberNames); 
} 

:しかし、もっと複雑なルールのために私はValidationResultのシーケンスを返しますIValidatableObjectを実装します。私は自分のモデルをローカライズプロバイダに依存させたくありません。どうすれば問題を解決できますか?

+0

私は問題を見ることはありません...なぜあなたは単にcontructor.Or現実の値を見つけるために現在のResourceManagerを使用してキーを渡したい場合はローカライズされた文字列を渡さないでください... –

答えて

1

IValidatableObject.Validateメソッドが呼び出されてカルチャがシステムで使用可能になる前に発生する可能性があります。コントローラアクションからValidateメソッドを手動で呼び出すと、エラーメッセージが適切にローカライズされます。

文化を設定する場所はどこですか? コントローラ> ExecuteCoreに設定する必要があります。 this投稿またはThis投稿をご覧ください。