实体类:
public class Contact
{
public string usrname { get; set; }
public string phone { get; set; }
public string email { get; set; }
}
ApiController:
public Contact Get(Contact contact)
{
return contact;
}
请问,能不能在Get方法的参数校验之前,给Contact类型中的属性如usrname动态添加特性,用来实现动态验证?
参考:http://blog.csdn.net/fangxing80/article/details/8170441
看我这篇
http://www.cnblogs.com/hohoa/p/5839993.html
看了下你的介绍,需要编译前在model的属性上设置指定的验证特性;
我想要的是model的属性没有任何特性,在运行时,根据自定义的规则(如配置文件)给属性动态添加特性,不知道能不能实现。
谢谢啦
@coder1989: 肯定是可以实现的,但是实现方式和我给的参考就不太一样了,总之就是这样搞太麻烦了。我的疑问是,既然你也要在配置文件设置规则,为什么不直接用特性设置呢,难道有什么特殊考虑?
@balahoho: 因为api模型验证和wpf模型验证都依赖验证特性,而这两处的模型不能使用同一个, 只是想使用统一的验证规则;在两处模型的属性都添加编译时验证特性也可以解决,只是每次添加功能都写两份验证,感觉太麻烦还容易导致不一致,所以想有没有统一的解决办法,可以将验证只写一次,两处使用。
谢谢回复哦
@coder1989: 如果要单独写验证规则的话其实也挺麻烦,主要体现在读规则后那些验证步骤,估计会有大堆if..else,相比之下我觉得维护其中一个模型,另外一个同步复制过去要简单一些,个人意见~
@balahoho: 是的,验证规则解析也是个麻烦事儿,最后还是放弃了,哈哈~;
昨天,看到这篇文章http://blog.csdn.net/fangxing80/article/details/8170441,使用MetadataType的;
有点儿启发,wepapi的模型添加编译时验证特性,然后作为WPF模型的MetadataType进行验证,这样,一处验证规则(webapi模型),就可以多出使用了(wpf模型的验证)。
谢谢你的意见,有机会多交流啊
@coder1989: 一起学习~