我使用数据非常快速地定义了代码:
using System.ComponentModel.DataAnnotations;
class UseDataAnnotations
{
[Required(ErrorMessage = "Name is compulsory")]
[StringLength(20)]
[RegularExpression(@"^[A-Z]{5, 20}$")]
public string Name { get; set; }
}
class Program
{
public static void Main(String [] args)
{
UseDataAnnotations obj = new UseDataAnnotations();
obj.Name = null;
var context = new ValidationContext(obj, null, null);
var result = new List<ValidationResult>();
bool IsValid = Validator.TryValidateObject(
obj,
context,
null,
true);
Console.WriteLine(IsValid);
foreach(var x in result)
{
Console.WriteLine(x.ErrorMessage);
}
}
}
我希望:只要“名称”字段为空,所有检查都将失败并引发某种异常。
但是在运行该程序时,它只是打印“ False”,其他都没有发生。那么我在哪里弄错了,我的“ DataAnnotation”根本没有起作用吗?
我正在使用vs2017。非常感谢。
答案 0 :(得分:1)
验证工作正常,您可以按预期获得MERGE
,但是您没有在false
方法上传递result
来填充错误。例如:
TryValidateObject
在此处查看工作示例:https://dotnetfiddle.net/lI3z1M