如何在 C# 中使用数据注释进行验证?
How to Validate with data anotation in c#?
我有一个简单的程序可以使用数据注释进行验证,但是当我使用 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();
}
}
在 MVC 项目中,MetaDataType
属性被识别。其他项目将需要一点帮助。在开始验证之前,您需要注册元数据 class.
TypeDescriptor.AddProviderTransparent(new AssociatedMetadataTypeTypeDescriptionProvider(typeof(User), typeof(UserMetadata)), typeof(User));
这应该能让您正确地测试您的验证。
在 Jeremy Gruenwald 的相关主题回答中有更多关于此的信息 -> Validate data using DataAnnotations with WPF & Entity Framework
我有一个简单的程序可以使用数据注释进行验证,但是当我使用 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();
}
}
在 MVC 项目中,MetaDataType
属性被识别。其他项目将需要一点帮助。在开始验证之前,您需要注册元数据 class.
TypeDescriptor.AddProviderTransparent(new AssociatedMetadataTypeTypeDescriptionProvider(typeof(User), typeof(UserMetadata)), typeof(User));
这应该能让您正确地测试您的验证。
在 Jeremy Gruenwald 的相关主题回答中有更多关于此的信息 -> Validate data using DataAnnotations with WPF & Entity Framework