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

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

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

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

【51CTO.com快譯】數(shù)據(jù)注釋(System.ComponentModel.DataAnnotations命名空間的一部分)是可以運(yùn)用于類或類成員的屬性,以指定類之間的關(guān)系、描述數(shù)據(jù)如何在UI中顯示以及指定驗(yàn)證規(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)建控制臺(tái)應(yīng)用程序項(xiàng)目

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

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

這將在Visual Studio 2019中創(chuàng)建一個(gè)新的.NET Core控制臺(tái)應(yīng)用程序項(xiàng)目。我們?cè)诒疚暮竺鎸⑹褂迷擁?xiàng)目來處理數(shù)據(jù)注釋。

添加System.ComponentModel.DataAnnotations命名空間

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

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

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

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

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

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

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

在前面創(chuàng)建的控制臺(tái)應(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類的實(shí)例并為其屬性賦予值。

 

  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方法中編寫下列代碼片段,以驗(yàn)證模型。

 

  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這個(gè)類為您提供了進(jìn)行驗(yàn)證所在的上下文。如果驗(yàn)證成功,Validator類的TryValidateObject靜態(tài)方法返回true,否則返回false。它還返回ValidationResults列表,詳細(xì)列出該模型未通過的所有驗(yàn)證。最后,我們使用foreach循環(huán)來迭代處理ValidationResults列表,在控制臺(tái)窗口顯示錯(cuò)誤消息。

完整的代碼片段如下所示,供您參考。

 

  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)該會(huì)看到控制臺(tái)窗口顯示的下列錯(cuò)誤消息:

  1. LastName is required 

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

想創(chuàng)建自定義驗(yàn)證屬性類,您應(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ù)驗(yàn)證規(guī)則,因而沒必要一再重寫同樣的驗(yàn)證代碼。

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

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為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

2009-08-19 16:42:41

C#如何使用XML

2015-09-16 15:11:58

C#異步編程

2009-08-06 16:44:03

C#創(chuàng)建WebServ

2024-09-04 08:09:54

2009-03-12 13:49:30

DataTemplatWPFC#

2021-06-17 06:52:37

C#自定義異常

2024-04-16 12:13:07

usingC#開發(fā)

2020-12-31 07:31:10

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

2020-02-28 09:00:00

ObjectC#編程語言

2009-08-21 15:37:13

C#空格

2009-08-27 17:47:21

c#皮膚

2009-09-11 11:27:38

AttributeUsC# Attribut

2021-03-07 16:37:52

C#應(yīng)用程序

2009-08-06 17:15:34

C#開發(fā)和使用

2021-02-01 12:36:59

C# Channels存儲(chǔ)

2025-01-09 07:54:03

2024-04-15 16:11:33

C#HTTP請(qǐng)求.NET
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 亚洲成网站 | 久久合久久| 自拍视频精品 | 国产视频久久 | 久久久免费在线观看 | 久久在线免费 | 亚洲国产精品一区二区久久 | 天天久久 | 成人黄色在线 | 久久草在线视频 | 久久的色 | 69性欧美高清影院 | 欧美久久一级特黄毛片 | 亚洲视频免费在线观看 | 精品国产欧美一区二区 | 中文字幕在线一区二区三区 | 国产精品毛片 | 91在线视频一区 | 亚洲国产高清高潮精品美女 | 91在线免费视频 | 亚洲毛片在线 | 中文字幕av在线一二三区 | 国产成人精品a视频一区www | 99久久久国产精品 | 免费在线观看一区二区 | 欧美婷婷 | 久久国产福利 | 国产在线观看一区二区 | 日韩一级精品视频在线观看 | 三区在线观看 | 国产精品九九视频 | 亚洲国产成人久久综合一区,久久久国产99 | 亚洲精品一级 | 91精品国产91久久久久久吃药 | 在线观看视频一区 | 久久久久久九九九九 | 日日夜精品视频 | 亚洲精品第一 | 亚洲日本一区二区三区四区 | 91久久网站 | 99pao成人国产永久免费视频 |