c# – 如何在WPF或Winforms应用程序中使用System.ComponentModel
发布时间:2020-12-15 08:41:29 所属栏目:百科 来源:网络整理
导读:是否可以在 WPF或 Winforms类中使用System.ComponentModel.DataAnnotations并且它属于属性(例如Required,Range,…)? 我想把我的验证放到attributs上. 谢谢 编辑1: 我写这个: public class Recipe{ [Required] [CustomValidation(typeof(AWValidation),"Va
是否可以在
WPF或
Winforms类中使用System.ComponentModel.DataAnnotations并且它属于属性(例如Required,Range,…)?
我想把我的验证放到attributs上. 谢谢 编辑1: 我写这个: public class Recipe { [Required] [CustomValidation(typeof(AWValidation),"ValidateId",ErrorMessage = "nima")] public int Name { get; set; } } private void Window_Loaded(object sender,RoutedEventArgs e) { var recipe = new Recipe(); recipe.Name = 3; var context = new ValidationContext(recipe,serviceProvider: null,items: null); var results = new List<System.ComponentModel.DataAnnotations.ValidationResult>(); var isValid = Validator.TryValidateObject(recipe,context,results); if (!isValid) { foreach (var validationResult in results) { MessageBox.Show(validationResult.ErrorMessage); } } } public class AWValidation { public bool ValidateId(int ProductID) { bool isValid; if (ProductID > 2) { isValid = false; } else { isValid = true; } return isValid; } } 但即使我将3设置为我的财产也没有发生任何事情 解决方法
是的,you can.这是
another article说明这一点.您甚至可以通过手动创建
ValidationContext在控制台应用程序中执行此操作:
public class DataAnnotationsValidator { public bool TryValidate(object @object,out ICollection<ValidationResult> results) { var context = new ValidationContext(@object,items: null); results = new List<ValidationResult>(); return Validator.TryValidateObject( @object,results,validateAllProperties: true ); } } 更新: 这是一个例子: public class Recipe { [Required] [CustomValidation(typeof(AWValidation),ErrorMessage = "nima")] public int Name { get; set; } } public class AWValidation { public static ValidationResult ValidateId(int ProductID) { if (ProductID > 2) { return new ValidationResult("wrong"); } else { return ValidationResult.Success; } } } class Program { static void Main() { var recipe = new Recipe(); recipe.Name = 3; var context = new ValidationContext(recipe,items: null); var results = new List<ValidationResult>(); var isValid = Validator.TryValidateObject(recipe,true); if (!isValid) { foreach (var validationResult in results) { Console.WriteLine(validationResult.ErrorMessage); } } } } 请注意,ValidateId方法必须是public static并返回ValidationResult而不是boolean.另请注意传递给TryValidateObject方法的第四个参数,如果希望计算自定义验证器,则必须将其设置为true. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- flashback_area 区域溢出导致数据库宕机
- [Swift]LeetCode187. 重复的DNA序列 | Repeated DNA Sequen
- c – SDL窗口未显示
- reactjs – React.js“不变违规:findComponentRoot”
- 免费自学Cocos2d-js2016原创视频教程(17集)http://blog.c
- c# – WPF在MouseOver上绘制边框
- ruby-on-rails – 新手:’rake -T’时出现错误信息
- oracl数据库中的substr()函数的用法
- Cocos2d-x 3.0正式版及android环境搭建详细教程
- 使用正则表达式验证登录页面输入是否符合要求