Asp.net MVC框架的扩展性意味着实现自定义验证逻辑有着很大的可行性。主要有两个核心方法:
1.将验证逻辑封装在自定义的数据注解中。
2.将验证逻辑封装在模型对象中。
把验证逻辑封装在自定义数据注解中可以轻松地实现在多个模型中重用逻辑,这需要在特性内部编写代码以对应不同类型的模型,一旦实现了,新的注解就可以在多处重用。
如果把验证逻辑放入模型对象中,就意味着验证逻辑可以很容易的编码实现,但不利于实现逻辑的重用。
一、自定义注解
所有的验证注解特性最终都派生自基类:ValidationAttribute,他是一个抽象类。验证逻辑也必须派生自ValidationAttribute. 在自定义注解中必须重载至少一个IsValid方法,用来返回模型的有效性。
二、IValidatableObject
自验证(self-validating)模型是指一个知道如何验证自身的模型对象。一个模型对象可以通过实现IValidatableObject接口来实现对自身的验证。