我正在开发一个ASP.NET MVC应用程序,其中模型是XML而不是类。我仍然希望在客户端和服务器端使用尽可能多的框架内置组件进行模型验证。目前我所做的是创建一个简单的验证器接口和一个实现。在实现类中,我使用了内置的验证属性来进行验证。
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
。
这里有更好的策略吗?是否有任何内置类我可以扩展来进行没有类的验证?等待你的想法和建议。