当数据无效时,C#DataAnnotation不会引发异常吗?

时间:2019-06-06 11:43:04

标签: c# exception annotations

我使用数据非常快速地定义了代码:

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。非常感谢。

1 个答案:

答案 0 :(得分:1)

验证工作正常,您可以按预期获得MERGE,但是您没有在false方法上传递result来填充错误。例如:

TryValidateObject

在此处查看工作示例:https://dotnetfiddle.net/lI3z1M