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個字符之間。我只想看到這個名字在這種情況下是必需的。這可能嗎?
但是,這並沒有告訴我,值沒有指定。它告訴我這是不正確的長度。這兩個是單獨的問題,我想單獨處理它們。 – uriDium 2010-09-30 08:37:36
@uriDium:當您指定兩個驗證規則(屬性)時,VAB將始終運行它們兩者。你想要的行爲是「運行驗證器1,只有當它有效,運行驗證器2」。這種行爲不支持開箱即用。你可以編寫一個'[SelfValidation]'方法,或者一個自定義'NotNullStringLengthValidator'來獲得這種行爲。 – Steven 2010-09-30 10:32:54
我以爲很多:( – uriDium 2010-09-30 15:18:04