首页 新闻 会员 周边

webapi2.0绑定模型的属性能不能添加动态特性

0
悬赏园豆:20 [已解决问题] 解决于 2016-12-30 08:21

实体类:

 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动态添加特性,用来实现动态验证?

Rider11的主页 Rider11 | 初学一级 | 园豆:184
提问于:2016-12-28 16:41
< >
分享
最佳答案
0

参考:http://blog.csdn.net/fangxing80/article/details/8170441

Rider11 | 初学一级 |园豆:184 | 2016-12-30 08:20
其他回答(1)
0

看我这篇

http://www.cnblogs.com/hohoa/p/5839993.html

收获园豆:20
balahoho | 园豆:2050 (老鸟四级) | 2016-12-28 18:02

看了下你的介绍,需要编译前在model的属性上设置指定的验证特性;

我想要的是model的属性没有任何特性,在运行时,根据自定义的规则(如配置文件)给属性动态添加特性,不知道能不能实现。

谢谢啦

支持(0) 反对(0) Rider11 | 园豆:184 (初学一级) | 2016-12-29 08:43

@coder1989: 肯定是可以实现的,但是实现方式和我给的参考就不太一样了,总之就是这样搞太麻烦了。我的疑问是,既然你也要在配置文件设置规则,为什么不直接用特性设置呢,难道有什么特殊考虑?

支持(0) 反对(0) balahoho | 园豆:2050 (老鸟四级) | 2016-12-29 09:49

@balahoho: 因为api模型验证和wpf模型验证都依赖验证特性,而这两处的模型不能使用同一个, 只是想使用统一的验证规则;在两处模型的属性都添加编译时验证特性也可以解决,只是每次添加功能都写两份验证,感觉太麻烦还容易导致不一致,所以想有没有统一的解决办法,可以将验证只写一次,两处使用。

谢谢回复哦

支持(0) 反对(0) Rider11 | 园豆:184 (初学一级) | 2016-12-29 09:58

@coder1989: 如果要单独写验证规则的话其实也挺麻烦,主要体现在读规则后那些验证步骤,估计会有大堆if..else,相比之下我觉得维护其中一个模型,另外一个同步复制过去要简单一些,个人意见~

支持(0) 反对(0) balahoho | 园豆:2050 (老鸟四级) | 2016-12-29 10:31

@balahoho: 是的,验证规则解析也是个麻烦事儿,最后还是放弃了,哈哈~;

昨天,看到这篇文章http://blog.csdn.net/fangxing80/article/details/8170441,使用MetadataType的;

有点儿启发,wepapi的模型添加编译时验证特性,然后作为WPF模型的MetadataType进行验证,这样,一处验证规则(webapi模型),就可以多出使用了(wpf模型的验证)。

谢谢你的意见,有机会多交流啊

支持(0) 反对(0) Rider11 | 园豆:184 (初学一级) | 2016-12-30 08:19

@coder1989: 一起学习~

支持(0) 反对(0) balahoho | 园豆:2050 (老鸟四级) | 2016-12-30 09:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册