数据注释(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控制台应用程序项目。
这将在Visual Studio 2019中创建一个新的.NET Core控制台应用程序项目。我们在本文后面将使用该项目来处理数据注释。
添加System.ComponentModel.DataAnnotations命名空间
想使用本文给出的代码示例,应该将System.ComponentModel.DataAnnotations命名空间添加到您的程序。
注意,属性用于指定类或属性的元数据。数据注释属性大致分为以下几类:
C#中的数据注释属性类
System.ComponentModel.Annotations命名空间包含几个属性类,它们可用于为您的实体类或数据控件定义元数据。最常用的属性包括如下:
C#中的数据注释示例
在前面创建的控制台应用程序中的Author.cs文件中创建以下类。
- public class Author
- {
- [Required(ErrorMessage = "{0} is required")]
- [StringLength(50, MinimumLength = 3,
- ErrorMessage = "First Name should be minimum 3 characters and a maximum of 50 characters")]
- [DataType(DataType.Text)]
- public string FirstName { get; set; }
- [Required(ErrorMessage = "{0} is required")]
- [StringLength(50, MinimumLength = 3,
- ErrorMessage = "Last Name should be minimum 3 characters and a maximum of 50 characters")]
- [DataType(DataType.Text)]
- public string LastName { get; set; }
- [DataType(DataType.PhoneNumber)]
- [Phone]
- public string PhoneNumber { get; set; }
- [DataType(DataType.EmailAddress)]
- [EmailAddress]
- public string Email { get; set; }
- }
下列代码片段表明了您如何创建Author类的实例并为其属性赋予值。
- Author author = new Author();
- author.FirstName = "Joydip";
- author.LastName = "";
- author.PhoneNumber = "1234567890";
- author.Email = "joydipkanjilal@yahoo.com";
您可以在Program.cs文件的Main方法中编写下列代码片段,以验证模型。
- ValidationContext context = new ValidationContext(author, null, null);
- List validationResults = new List();
- bool valid = Validator.TryValidateObject(author, context, validationResults, true);
- if (!valid)
- {
- foreach (ValidationResult validationResult in validationResults)
- {
- Console.WriteLine("{0}", validationResult.ErrorMessage);
- }
- }
ValidationContext这个类为您提供了进行验证所在的上下文。如果验证成功,Validator类的TryValidateObject静态方法返回true,否则返回false。它还返回ValidationResults列表,详细列出该模型未通过的所有验证。最后,我们使用foreach循环来迭代处理ValidationResults列表,在控制台窗口显示错误消息。
完整的代码片段如下所示,供您参考。
- public class Author
- {
- [Required(ErrorMessage = "{0} is required")]
- [StringLength(50, MinimumLength = 3,
- ErrorMessage = "First Name should be minimum 3 characters and a maximum of 50 characters")]
- [DataType(DataType.Text)]
- public string FirstName { get; set; }
- [Required(ErrorMessage = "{0} is required")]
- [StringLength(50, MinimumLength = 3,
- ErrorMessage = "Last Name should be minimum 3 characters and a maximum of 50 characters")]
- [DataType(DataType.Text)]
- public string LastName { get; set; }
- [DataType(DataType.PhoneNumber)]
- [Phone]
- public string PhoneNumber { get; set; }
- [DataType(DataType.EmailAddress)]
- [EmailAddress]
- public string Email { get; set; }
- }
- class Program
- {
- static void Main(string[] args)
- {
- Author author = new Author();
- author.FirstName = "Joydip";
- author.LastName = ""; //No value entered
- author.PhoneNumber = "1234567890";
- author.Email = "joydipkanjilal@yahoo.com";
- ValidationContext context = new ValidationContext
- (author, null, null);
- List validationResults = new
- List();
- bool valid = Validator.TryValidateObject
- (author, context, validationResults, true);
- if (!valid)
- {
- foreach (ValidationResult validationResult in
- validationResults)
- {
- Console.WriteLine("{0}",
- validationResult.ErrorMessage);
- }
- }
- Console.ReadKey();
- }
- }
执行程序后,应该会看到控制台窗口显示的下列错误消息:
- LastName is required
在C#中创建自定义验证属性
想创建自定义验证属性类,您应该扩展ValidationAttribute基础类,并覆盖IsValid方法,如下列代码片段所示。
- [AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = false)]
- public class IsEmptyAttribute : ValidationAttribute
- {
- public override bool IsValid(object value)
- {
- var inputValue = value as string;
- return !string.IsNullOrEmpty(inputValue);
- }
- }
下列代码片段表明了你如何可以使用自定义属性来装饰Author类的FirstName和LastName属性。
- [IsEmpty(ErrorMessage = "Should not be null or empty.")]
- public string FirstName { get; set; }
- [IsEmpty(ErrorMessage = "Should not be null or empty.")]
- 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。内容未经允许不得转载,或转载时需注明来源: 创新互联