0

如果我有兩個驗證器,一個NotNullValidator和一個StringLengthValidator,有沒有辦法只得到一個空驗證錯誤,而不是兩者。例如:如何僅使用驗證應用程序塊獲取屬性上的第一個驗證錯誤?

public class Test 
{ 
    [NotNullValidator(MessageTemplate="Name is required"), 
    StringLengthValidator(1,50, MessageTemplate="Name must be between 1 and 50 characters")] 
    public string Name { get; set; } 
} 

Test test = new Test {Name = null}; 
ValidationResults r = Validation.Validate(test); 
if (!r.IsValid) 
{ 
    foreach (var test in r) 
    { 
     Console.WriteLine(test.Message); 
    } 
} 

在這種情況下,我得到兩個驗證錯誤。我得到一個告訴我,「名稱是必需的」,另一個告訴我應該在1到50個字符之間。我只想看到這個名字在這種情況下是必需的。這可能嗎?

回答

0

只要刪除NotNullValidatorAttribute,你很好去。

+0

但是,這並沒有告訴我,值沒有指定。它告訴我這是不正確的長度。這兩個是單獨的問題,我想單獨處理它們。 – uriDium 2010-09-30 08:37:36

+0

@uriDium:當您指定兩個驗證規則(屬性)時,VAB將始終運行它們兩者。你想要的行爲是「運行驗證器1,只有當它有效,運行驗證器2」。這種行爲不支持開箱即用。你可以編寫一個'[SelfValidation]'方法,或者一個自定義'NotNullStringLengthValidator'來獲得這種行爲。 – Steven 2010-09-30 10:32:54

+0

我以爲很多:( – uriDium 2010-09-30 15:18:04