DataAnnotations - 不允许数字,或仅允许给定字符串
在开发应用程序的过程中,我们经常需要对输入的数据进行验证,以确保数据的准确性和完整性。在 .NET 中,我们可以使用 DataAnnotations 来实现数据的验证和限制。一种常见的需求是限制某个属性不允许包含数字,或者只能包含特定的字符串。这种情况下,我们可以使用 DataAnnotations 中的一些属性来实现这样的限制。首先,我们需要为要验证的属性添加合适的 DataAnnotations 属性。如果我们希望属性不允许包含数字,可以使用 [RegularExpression] 属性,并指定一个正则表达式来限制属性的值。以下是一个示例:csharppublic class Person{ [RegularExpression(@"^[^0-9]+$", ErrorMessage = "属性不允许包含数字")] public string Name { get; set; }}在上面的示例中,我们使用了正则表达式 `^[^0-9]+$` 来限制属性 Name 的值不能包含数字。如果属性的值包含数字,则会显示错误消息 "属性不允许包含数字"。另一种情况是,我们希望属性只能包含特定的字符串。为了实现这个需求,我们可以使用 [RegularExpression] 属性,并指定一个正则表达式来限制属性的值。以下是一个示例:
csharppublic class Person{ [RegularExpression(@"^(red|blue|green)$", ErrorMessage = "属性只能是 red、blue 或 green")] public string Color { get; set; }}在上面的示例中,我们使用了正则表达式 `^(red|blue|green)$` 来限制属性 Color 的值只能是 "red"、"blue" 或 "green"。如果属性的值不在这个范围内,则会显示错误消息 "属性只能是 red、blue 或 green"。案例代码下面是一个完整的示例,演示了如何使用 DataAnnotations 来限制属性不允许包含数字或只能包含特定的字符串:
csharpusing System.ComponentModel.DataAnnotations;public class Person{ [RegularExpression(@"^[^0-9]+$", ErrorMessage = "属性不允许包含数字")] public string Name { get; set; } [RegularExpression(@"^(red|blue|green)$", ErrorMessage = "属性只能是 red、blue 或 green")] public string Color { get; set; }}public class Program{ public static void Main() { var person1 = new Person { Name = "John", Color = "red" }; var person2 = new Person { Name = "123", Color = "yellow" }; var validationResults1 = new List在上面的示例中,我们创建了一个名为 Person 的类,其中包含了两个属性 Name 和 Color。属性 Name 不允许包含数字,属性 Color 只能是 "red"、"blue" 或 "green"。我们创建了两个 Person 对象,分别进行了验证,并输出了验证结果。通过使用 DataAnnotations,我们可以轻松地实现对数据的验证和限制。无论是限制属性不允许包含数字,还是只能包含特定的字符串,DataAnnotations 都提供了简单而强大的解决方案。(); var validationResults2 = new List (); var isValid1 = Validator.TryValidateObject(person1, new ValidationContext(person1), validationResults1, true); var isValid2 = Validator.TryValidateObject(person2, new ValidationContext(person2), validationResults2, true); Console.WriteLine("Validation results for person1:"); foreach (var validationResult in validationResults1) { Console.WriteLine(validationResult.ErrorMessage); } Console.WriteLine("Validation results for person2:"); foreach (var validationResult in validationResults2) { Console.WriteLine(validationResult.ErrorMessage); } }}