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

答え

これは、この問題の解決に役立つ投稿へのリンクです。どうやら、最初に matadata クラスを登録する必要があります。

于 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 に答える