我正在尝试使用Data Annotations但使用元数据类来验证类。
[MetadataType(typeof(TestMetaData))]
public class Test
{
public string Prop { get; set; }
internal class TestMetaData
{
[Required]
public string Prop { get; set; }
}
}
[Test]
[ExpectedException(typeof(ValidationException))]
public void TestIt()
{
var invalidObject = new Test();
var context = new ValidationContext(invalidObject, null, null);
context.MemberName = "Prop";
Validator.ValidateProperty(invalidObject.Prop, context);
}
测试失败。如果我抛弃了元数据类,只是在实际的类上装饰了它,它就可以了。我做错了吗?这让我处于疯狂的边缘。请帮忙。
答案 0 :(得分:1)
以下是帮助我解决此问题的帖子的链接。显然你必须首先注册matadata类。
答案 1 :(得分:-1)
元数据类必须是公共的,才能使外部验证起作用。
[MetadataType(typeof(TestMetaData))]
public class Test
{
public string Prop { get; set; }
public class TestMetaData
{
[Required]
public string Prop { get; set; }
}
}
我认为在模型类中定义元数据类,就像在您的示例中一样,应该可以工作。没有测试过。