如何在c#中使用数据anotation进行验证?

时间:2016-11-09 17:57:14

标签: c# validation oop console-application data-annotations

我有简单的程序,可以使用数据anotatoin进行验证,但是当我使用MetadataType进行单独的数据转换时,resualt验证始终是正确的。为什么在代码下面的结果总是正确的?

public partial class User
{
    public string FullName { get; set; }
}


[MetadataType(typeof(UserMetadata))]
public partial class User
{
}

public class UserMetadata
{
    [Required]
    [MinLength(2)]
    public string FullName { get; set; }
}

class Program
{
    static void Main(string[] args)
    {

        var u = new User
        {
            // must raise error
            FullName = "A"
        };

        var context = new ValidationContext(u, null, null);
        var list = new List<ValidationResult>();
        var isCorrect = Validator.TryValidateObject(u, context, list, true);

        // isCorrect always is True 
        Console.WriteLine(isCorrect);
        Console.ReadKey();
    }
}

1 个答案:

答案 0 :(得分:0)

在MVC项目中,MetaDataType属性得到识别。其他项目需要一些帮助。在开始验证之前,您需要注册元数据类。

TypeDescriptor.AddProviderTransparent(new AssociatedMetadataTypeTypeDescriptionProvider(typeof(User), typeof(UserMetadata)), typeof(User));

这应该可以让您正确测试验证。

在Jeremy Gruenwald的相关主题答案中有更多相关信息 - &gt; Validate data using DataAnnotations with WPF & Entity Framework