2012-02-16 54 views
1
public class Test 
{ 
    [RelativeDateTimeValidator(-10, DateTimeUnit.Year, 10, DateTimeUnit.Year, ErrorMessage = "Error")] 
    public DateTime ADate { get; set; } 

    public void ValidateMyProperty() 
    { 
     ADate = new DateTime(1900, 01, 01); 

     ValidationResults vrs = Validation.Validate<Test>(this); 
     foreach (var vr in vrs) 
     { 
      Print(vr.Message); 
     } 
    } 
} 

此顯示訪問驗證器塊的ErrorMessage

The value must fall within the range "-10"(Year) - "10(Year) relative to now 

然而,我怎樣diplay /訪問,我已指定的錯誤消息(的ErrorMessage = 「錯誤」)?

在此先感謝。

回答

1

如果您想指定驗證失敗時收到的消息,我認爲您正在尋找MessageTemplate屬性。它也允許可替換的令牌。

從文檔:

public class Person 
{ 
    [RelativeDateTimeValidator(-120, DateTimeUnit.Year, -18, DateTimeUnit.Year, 
      Ruleset="RuleSetA", MessageTemplate="Must be 18 years or older.")] 
    public DateTime DateOfBirth 
    { 
    get 
    { 
     return dateOfBirth; 
    } 
    } 
} 

消息模板令牌

如果消息模板包含的令牌(例如,「{0}」),驗證器將與值替換這些令牌時的ValidationResult是創建。下表列出了由相對日期時間驗證程序支持的令牌。

令牌

含義

{0}

此令牌代表了正在驗證對象的值。儘管將原始值顯示爲驗證消息的一部分可能很有用,但您必須小心避免通過轉義任何可用於攻擊傳遞消息給用戶的系統的字符來避免注入攻擊。

{1}

此標記表示正在驗證的對象的關鍵。當驗證程序連接到屬性或字段類型的成員時,密鑰將設置爲成員名稱。當驗證程序連接到對象時,密鑰爲空,並且標記被空字符串替換。

{2}

此令牌表示驗證器實例上指定的標記。如果未提供標記,則標記將被替換爲空字符串。

+0

好東西,謝謝。 – Craig 2012-02-16 19:36:46