我有简单的程序,可以使用数据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();
}
}
答案 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