【问题标题】:How to Validate with data anotation in c#?如何在 C# 中使用数据注释进行验证?
【发布时间】:2016-11-09 17:57:13
【问题描述】:

我有一个简单的程序可以使用数据注释进行验证,但是当我使用 MetadataType 进行单独的数据注释时,结果验证总是正确的。为什么下面代码的结果总是正确的?

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();
    }
}

【问题讨论】:

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


    【解决方案1】:

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

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

    这应该使您能够正确地测试您的验证。

    在 Jeremy Gruenwald 的相关主题回答中有更多关于此的信息 -> Validate data using DataAnnotations with WPF & Entity Framework

    【讨论】:

      猜你喜欢
      • 2021-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多