如何使用C#中的用户注释?

数据注释(System.ComponentModel.DataAnnotations命名空间的一部分)是可以运用于类或类成员的属性,以指定类之间的关系、描述数据如何在UI中显示以及指定验证规则。本文讨论数据注释、为什么数据注释很有用以及如何在.NET Core应用程序中使用它们。

创新互联建站专注于杨浦企业网站建设,响应式网站建设,电子商务商城网站建设。杨浦网站建设公司,为杨浦等地区提供建站服务。全流程定制网站制作,专业设计,全程项目跟踪,创新互联建站专业和态度为您提供的服务

若要使用本文提供的代码示例,您应该在系统中安装Visual Studio 2019。如果还没有安装,可以在此处(https://visualstudio.microsoft.com/downloads/)下载Visual Studio 2019。

在Visual Studio 2019中创建控制台应用程序项目

首先,不妨在Visual Studio中创建一个.NET Core控制台应用程序项目。假设系统中已安装Visual Studio 2019,按照下面概述的步骤在Visual Studio中创建新的.NET Core控制台应用程序项目。

  1. 启动Visual Studio IDE。
  2. 点击“创建新项目”。
  3. 在“创建新项目”窗口中,从显示的模板列表中选择“控制台应用程序(.NET Core)”。
  4. 点击下一步。
  5. 在接下来显示的“配置新项目”窗口中,指定新项目的名称和位置。
  6. 点击创建。

这将在Visual Studio 2019中创建一个新的.NET Core控制台应用程序项目。我们在本文后面将使用该项目来处理数据注释。

添加System.ComponentModel.DataAnnotations命名空间

想使用本文给出的代码示例,应该将System.ComponentModel.DataAnnotations命名空间添加到您的程序。

注意,属性用于指定类或属性的元数据。数据注释属性大致分为以下几类:

  • 验证属性——用于对实体的属性实施验证规则。
  • 显示属性——用于指定数据在用户界面中应如何显示。
  • 建模属性——用于指定类之间存在的关系。

C#中的数据注释属性类

System.ComponentModel.Annotations命名空间包含几个属性类,它们可用于为您的实体类或数据控件定义元数据。最常用的属性包括如下:

  • 并发检查
  • 最大长度
  • 必需
  • 字符串长度
  • 时间戳

C#中的数据注释示例

在前面创建的控制台应用程序中的Author.cs文件中创建以下类。

 
 
 
 
  1. public class Author  
  2. {  
  3. [Required(ErrorMessage = "{0} is required")]  
  4. [StringLength(50, MinimumLength = 3,  
  5. ErrorMessage = "First Name should be minimum 3 characters and a maximum of 50 characters")]  
  6. [DataType(DataType.Text)]  
  7. public string FirstName { get; set; }  
  8. [Required(ErrorMessage = "{0} is required")]  
  9. [StringLength(50, MinimumLength = 3,  
  10. ErrorMessage = "Last Name should be minimum 3 characters and a maximum of 50 characters")]  
  11. [DataType(DataType.Text)]  
  12. public string LastName { get; set; }  
  13. [DataType(DataType.PhoneNumber)]  
  14. [Phone]  
  15. public string PhoneNumber { get; set; }  
  16. [DataType(DataType.EmailAddress)]  
  17. [EmailAddress]  
  18. public string Email { get; set; }  

下列代码片段表明了您如何创建Author类的实例并为其属性赋予值。

 
 
 
 
  1. Author author = new Author();  
  2. author.FirstName = "Joydip";  
  3. author.LastName = "";  
  4. author.PhoneNumber = "1234567890";  
  5. author.Email = "joydipkanjilal@yahoo.com"; 

您可以在Program.cs文件的Main方法中编写下列代码片段,以验证模型。

 
 
 
 
  1. ValidationContext context = new ValidationContext(author, null, null);  
  2. List validationResults = new List();  
  3. bool valid = Validator.TryValidateObject(author, context, validationResults, true);  
  4. if (!valid)  
  5. {  
  6. foreach (ValidationResult validationResult in validationResults)  
  7. {  
  8. Console.WriteLine("{0}", validationResult.ErrorMessage);  
  9. }  

ValidationContext这个类为您提供了进行验证所在的上下文。如果验证成功,Validator类的TryValidateObject静态方法返回true,否则返回false。它还返回ValidationResults列表,详细列出该模型未通过的所有验证。最后,我们使用foreach循环来迭代处理ValidationResults列表,在控制台窗口显示错误消息。

完整的代码片段如下所示,供您参考。

 
 
 
 
  1. public class Author  
  2. {  
  3. [Required(ErrorMessage = "{0} is required")]  
  4. [StringLength(50, MinimumLength = 3,  
  5. ErrorMessage = "First Name should be minimum 3 characters and a maximum of 50 characters")]  
  6. [DataType(DataType.Text)]  
  7. public string FirstName { get; set; }  
  8. [Required(ErrorMessage = "{0} is required")]  
  9. [StringLength(50, MinimumLength = 3,  
  10. ErrorMessage = "Last Name should be minimum 3 characters and a maximum of 50 characters")]  
  11. [DataType(DataType.Text)]  
  12. public string LastName { get; set; }  
  13. [DataType(DataType.PhoneNumber)]  
  14. [Phone]  
  15. public string PhoneNumber { get; set; }  
  16. [DataType(DataType.EmailAddress)]  
  17. [EmailAddress]  
  18. public string Email { get; set; }  
  19. }  
  20. class Program  
  21. {  
  22. static void Main(string[] args)  
  23. {  
  24. Author author = new Author();  
  25. author.FirstName = "Joydip";  
  26. author.LastName = ""; //No value entered  
  27. author.PhoneNumber = "1234567890";  
  28. author.Email = "joydipkanjilal@yahoo.com";  
  29. ValidationContext context = new ValidationContext  
  30. (author, null, null); 
  31. List validationResults = new  
  32. List();  
  33. bool valid = Validator.TryValidateObject  
  34. (author, context, validationResults, true);  
  35. if (!valid)  
  36. {  
  37. foreach (ValidationResult validationResult in  
  38. validationResults)  
  39. {  
  40. Console.WriteLine("{0}",  
  41. validationResult.ErrorMessage);  
  42. }  
  43. }  
  44. Console.ReadKey();  
  45. }  

执行程序后,应该会看到控制台窗口显示的下列错误消息:

 
 
 
 
  1. LastName is required 

在C#中创建自定义验证属性

想创建自定义验证属性类,您应该扩展ValidationAttribute基础类,并覆盖IsValid方法,如下列代码片段所示。

 
 
 
 
  1. [AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = false)]  
  2. public class IsEmptyAttribute : ValidationAttribute  
  3. {  
  4. public override bool IsValid(object value)  
  5. {  
  6. var inputValue = value as string;  
  7. return !string.IsNullOrEmpty(inputValue);  
  8. }  

下列代码片段表明了你如何可以使用自定义属性来装饰Author类的FirstName和LastName属性。

 
 
 
 
  1. [IsEmpty(ErrorMessage = "Should not be null or empty.")]  
  2. public string FirstName { get; set; }  
  3. [IsEmpty(ErrorMessage = "Should not be null or empty.")]  
  4. public string LastName { get; set; } 

数据注释最初作为System. ComponentModel. DataAnnotations命名空间的一部分而引入到.NET 3.5中。此后,它已成为.NET中一种广泛使用的功能。你可以充分利用数据注释在单单一处定义数据验证规则,因而没必要一再重写同样的验证代码。

分享文章:如何使用C#中的用户注释?
文章地址:http://www.shufengxianlan.com/qtweb/news30/73680.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联