私は、モデルがクラスではなく XML として提供される ASP.NET MVC アプリケーションに取り組んでいます。フレームワークの組み込みコンポーネントをできるだけ多く使用して、クライアント側とサーバー側でモデルの検証を行いたいと思っています。現在、私が行ったことは、単純なバリデータ インターフェイスと実装を作成することです。実装クラスでは、組み込みの検証属性を使用して検証を行いました。
public interface IModelValidator
{
bool Required(string value);
bool Range(string value, int minimum, int maximum);
bool RegularExpression(string value, string pattern);
bool StringLength(string value, int maximumLength);
}
public class DataAnnotationValidator : IModelValidator
{
public bool Required(string value)
{
return new RequiredAttribute().IsValid(value);
}
public bool Range(string value, int minimum, int maximum)
{
return new RangeAttribute(minimum, maximum).IsValid(value);
}
public bool RegularExpression(string value, string pattern)
{
return new RegularExpressionAttribute(pattern).IsValid(value);
}
public bool StringLength(string value, int maximumLength)
{
return new StringLengthAttribute(maximumLength).IsValid(value);
}
}
すべてのコントローラーは、IValidator
および検証を行うアクションからの参照を持ちます。検証が失敗した場合は、エラーを に追加しますModelStateDictionary
。
ここにもっと良い戦略はありますか?クラスなしで検証を行うために拡張できる組み込みクラスはありますか? アイデアや提案をお待ちしています。