2010-01-22 94 views
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); 
} 

測試失敗。如果我拋棄元數據類,只是修飾了實際類中的屬性,它可以正常工作。我做錯了嗎?這讓我處於瘋狂的邊緣。請幫忙。

回答

-1

元數據類必須公開才能使外部驗證生效。

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

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

我相信在你的模型類裏面定義元數據類,就像你在你的例子中那樣,應該可以工作。沒有測試過它。

1

Answer

這裏是幫助我解決這個問題的帖子的鏈接。顯然你必須先註冊matadata類。

相關問題