我正在开发一个 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
.
这里有更好的策略吗?是否有任何内置类可以扩展以在没有类的情况下进行验证?等待您的想法和建议。