在ASP.NET MVC中,我们可以使用System.ComponentModel.DataAnnotations命名空间来协助表单/模型输入验证。
如果我不想被绑定到任何特定的框架,即xVal,EntLib Val Block等,我想基本上创建一个包装类来保护我的代码免受直接依赖,如何实现呢?
所以代替我的模型属性看起来像这样;
[Required]
property string Name {get;set;}
我希望它与我的代码相关联,在那里将实现首选的验证框架。
[MyRequired]
property string Name {get;set;}
答案 0 :(得分:1)
一种方法是从底层属性派生属性。 EG:
public class MyRequiredAttribute : EntLib.RequiredAttribute { }
通过这种方式,您可以稍后修改MyRequiredAttribute
类以从不同的基类派生,而其余代码则无需更改(您可能需要重新编译它)。扫描EntLib.RequiredAttribute
的EntLib(etc)代码仍应选择您的派生属性
这依赖于未被密封的基础属性。