2014-03-27 44 views
4

我想獲得一個簡單的自定義驗證屬性工作,但看不到我失蹤。自定義驗證屬性總是返回IsValid == true

[AttributeUsage(AttributeTargets.Property)] 
public class CustomValAttribute :ValidationAttribute 
{ 
    public override bool IsValid(object value) 
    { 
     return false; 
    } 
} 

public class TestModel 
{ 
    [CustomVal] 
    public string Name { get; set; } 
} 

然後我嘗試驗證:

var test = new TestModel(){ Name = "test" }; 
ValidationContext contx = new ValidationContext(test, null, null); 
var results = new List<ValidationResult>(); 
Console.WriteLine(Validator.TryValidateObject(test, contx, results)); 

但結果始終是真實的,然後我發現我的自定義驗證的IsValid方法永遠不會由Validator調用。我究竟做錯了什麼?

+0

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

回答

6

使用

Validator.TryValidateObject(test, contx, results, true); 

如果最後一個參數沒有設置爲trueValidator只檢查性能與RequiredAttribute(和只驗證使用該屬性,而忽略其他屬性)。

相關問題