成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何使用C#中的用戶注釋?

譯文
開發(fā) 后端
利用數(shù)據(jù)注釋使用屬性標(biāo)簽裝飾模型,以便在單單一處管理應(yīng)用程序的數(shù)據(jù)定義。

如何使用C#中的用戶注釋?

【51CTO.com快譯】數(shù)據(jù)注釋(System.ComponentModel.DataAnnotations命名空間的一部分)是可以運用于類或類成員的屬性,以指定類之間的關(guān)系、描述數(shù)據(jù)如何在UI中顯示以及指定驗證規(guī)則。本文討論數(shù)據(jù)注釋、為什么數(shù)據(jù)注釋很有用以及如何在.NET Core應(yīng)用程序中使用它們。

若要使用本文提供的代碼示例,您應(yīng)該在系統(tǒng)中安裝Visual Studio 2019。如果還沒有安裝,可以在此處(https://visualstudio.microsoft.com/downloads/)下載Visual Studio 2019。

在Visual Studio 2019中創(chuàng)建控制臺應(yīng)用程序項目

首先,不妨在Visual Studio中創(chuàng)建一個.NET Core控制臺應(yīng)用程序項目。假設(shè)系統(tǒng)中已安裝Visual Studio 2019,按照下面概述的步驟在Visual Studio中創(chuàng)建新的.NET Core控制臺應(yīng)用程序項目。

  1. 啟動Visual Studio IDE。
  2. 點擊“創(chuàng)建新項目”。
  3. 在“創(chuàng)建新項目”窗口中,從顯示的模板列表中選擇“控制臺應(yīng)用程序(.NET Core)”。
  4. 點擊下一步。
  5. 在接下來顯示的“配置新項目”窗口中,指定新項目的名稱和位置。
  6. 點擊創(chuàng)建。

這將在Visual Studio 2019中創(chuàng)建一個新的.NET Core控制臺應(yīng)用程序項目。我們在本文后面將使用該項目來處理數(shù)據(jù)注釋。

添加System.ComponentModel.DataAnnotations命名空間

想使用本文給出的代碼示例,應(yīng)該將System.ComponentModel.DataAnnotations命名空間添加到您的程序。

注意,屬性用于指定類或?qū)傩缘脑獢?shù)據(jù)。數(shù)據(jù)注釋屬性大致分為以下幾類:

  • 驗證屬性——用于對實體的屬性實施驗證規(guī)則。
  • 顯示屬性——用于指定數(shù)據(jù)在用戶界面中應(yīng)如何顯示。
  • 建模屬性——用于指定類之間存在的關(guān)系。

C#中的數(shù)據(jù)注釋屬性類

System.ComponentModel.Annotations命名空間包含幾個屬性類,它們可用于為您的實體類或數(shù)據(jù)控件定義元數(shù)據(jù)。最常用的屬性包括如下:

  • 并發(fā)檢查
  • 最大長度
  • 必需
  • 字符串長度
  • 時間戳

C#中的數(shù)據(jù)注釋示例

在前面創(chuàng)建的控制臺應(yīng)用程序中的Author.cs文件中創(chuàng)建以下類。

 

  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; }  

 

下列代碼片段表明了您如何創(chuàng)建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, nullnull);  
  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這個類為您提供了進(jìn)行驗證所在的上下文。如果驗證成功,Validator類的TryValidateObject靜態(tài)方法返回true,否則返回false。它還返回ValidationResults列表,詳細(xì)列出該模型未通過的所有驗證。最后,我們使用foreach循環(huán)來迭代處理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, nullnull); 
  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.  

 

執(zhí)行程序后,應(yīng)該會看到控制臺窗口顯示的下列錯誤消息:

  1. LastName is required 

在C#中創(chuàng)建自定義驗證屬性

想創(chuàng)建自定義驗證屬性類,您應(yīng)該擴(kuò)展ValidationAttribute基礎(chǔ)類,并覆蓋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; } 

 

數(shù)據(jù)注釋最初作為System. ComponentModel. DataAnnotations命名空間的一部分而引入到.NET 3.5中。此后,它已成為.NET中一種廣泛使用的功能。你可以充分利用數(shù)據(jù)注釋在單單一處定義數(shù)據(jù)驗證規(guī)則,因而沒必要一再重寫同樣的驗證代碼。

原文標(biāo)題:How to use data annotations in C#,作者:Joydip Kanjilal

【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】

責(zé)任編輯:龐桂玉 來源: 51CTO
相關(guān)推薦

2021-01-20 05:53:25

C# ValueTupleTuple

2015-04-20 11:19:15

2009-08-18 14:29:27

DirectSound

2015-09-16 15:11:58

C#異步編程

2009-08-06 16:44:03

C#創(chuàng)建WebServ

2009-08-19 16:42:41

C#如何使用XML

2024-09-04 08:09:54

2024-04-16 12:13:07

usingC#開發(fā)

2021-06-17 06:52:37

C#自定義異常

2020-12-31 07:31:10

C# 反射數(shù)據(jù)

2009-03-12 13:49:30

DataTemplatWPFC#

2020-02-28 09:00:00

ObjectC#編程語言

2009-08-21 15:37:13

C#空格

2009-09-11 11:27:38

AttributeUsC# Attribut

2009-08-27 17:47:21

c#皮膚

2009-08-06 17:15:34

C#開發(fā)和使用

2025-01-09 07:54:03

2021-02-01 12:36:59

C# Channels存儲

2021-03-07 16:37:52

C#應(yīng)用程序

2009-01-19 10:26:02

C#Namespace.NET
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 欧美精品一区二区三区在线播放 | 国产精品99久久久久久宅男 | 成人网av | 午夜视频免费在线观看 | 久久国产精品一区二区 | 欧美亚洲网站 | 国产精品一区二区三区在线 | 亚洲v区| 国产精品久久久久久久久久免费看 | 国产伦精品一区二区三区照片91 | 精品国产乱码久久久久久图片 | 三级国产三级在线 | 视频1区| 日韩亚洲视频 | 亚洲a一区二区 | 中文字幕一级毛片视频 | 久久久久久国产精品 | 国产精品久久久久久久久污网站 | 亚洲成色777777在线观看影院 | 国产精品一区二区视频 | 91九色在线观看 | 国产一区不卡 | 国产免费xxx| 人人人人人爽 | 精品国产乱码久久久久久丨区2区 | 国产在线对白 | 一级毛片免费 | 日韩av在线免费 | 一级片免费视频 | 国产精品国产a级 | 成人欧美一区二区三区在线播放 | 中文字幕免费中文 | 精品综合 | 中文字幕在线不卡播放 | 狠狠久久综合 | 精品欧美一区二区在线观看 | 日韩久久久一区二区 | 天堂色区| 国产激情福利 | 91麻豆精品国产91久久久久久 | 成人免费黄色 |