2

我正在尝试使用数据注释但使用元数据类来验证一个类。

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

测试失败。如果我放弃元数据类并仅在实际类上装饰属性,它就可以正常工作。我做错了吗?这让我处于精神错乱的边缘。请帮忙。

4

2 回答 2

1

回答

这是帮助我解决此问题的帖子的链接。显然你必须先注册元数据类。

于 2010-06-22T18:03:43.457 回答
-1

元数据类必须是公共的,外部验证才能工作。

[MetadataType(typeof(TestMetaData))] 
public class Test 
{ 
    public string Prop { get; set; } 

    public class TestMetaData 
    { 
        [Required] 
        public string Prop { get; set; } 
    } 
}

我相信在你的模型类中定义元数据类,就像你在你的例子中所做的那样,应该可以工作。没有测试过。

于 2010-03-22T03:51:55.810 回答