ここで公開した独自の検証ライブラリを使用しています。
提案した2つとの違いは、検証が別々の検証クラスに入れられることです。検証クラスを作成して忘れることができます。検証クラスは検証ライブラリによって自動的に検出されます。
public class MyModelValidator : FluentValidator<MyModel>
{
public MyModelValidator()
{
Property("FirstName").Required();
Property("LastName").Required().Min(15);
}
}
非常にお気に入りのローカリゼーションライブラリ(文字列テーブルなど)を使用して、ローカリゼーションのサポートを追加するのも簡単です。
public class StringTableProvider : ILanguagePrompts
{
public string this[string modelName, string propertyName]
{
get { return Get(modelName, propertyName) ?? "[" + propertyName+ "]"; }
}
public string Get(string modelName, string propertyName)
{
return Resource1.ResourceManager.GetString(modelName + "_" + propertyName);
}
}
そして構成するには:
Validator.LanguageHandler = new StringTableProvider();
実際の検証は次のように行われます。
User user = new User();
user.FirstName = "Jonas";
var errors = Validator.Validate(user);
if (errors.Count > 0)
{
// Handle the errors in any way you like.
// both property names (localized and actual property name) and localized error message is accessible.
}