2011-12-20 80 views
11

我正在嘗試使用IValidatableObject來驗證相對於對方的表單值。我想將一個ValidationResult分配給特定的字段,這樣我可以在該字段旁邊顯示一條錯誤消息。將ValidationResult分配給特定字段?

例如,我可能希望讓用戶輸入兩次密碼,如果第二個不等於第一個,則驗證失敗,然後在第二個旁邊顯示錯誤消息。

但是,我似乎只能在模型級別分配錯誤,按照模型級別,我的意思是一個將顯示@Html.ValidationSummary(true)的錯誤,並且不與特定模型字段綁定。

我檢查了ValidationResult的聲明,並且沒有看到任何對此有幫助的屬性或方法。所以 - 任何人都可以向我展示一種方法,從一個IValidateableObject的Validate方法內的某個特定字段分配一個ValidationResult,或者確認它不可能這樣做? (注意:我不是在尋找解決方法,請 - 例如,沒有回答關於,例如,需要處理密碼示例的過濾器,我只想知道關於IValidateObject限制的具體內容。)

回答

23

是可能的,ValidationResult有一個接受IEnumarable字符串的重載,要關聯的屬性。

一個例子。

 public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) 
    { 
     if (Password != PasswordConfirmation) 
      yield return new ValidationResult("Password confirmation must match", new[] { "PasswordConfirmation" }); 
    } 
+1

是的!我剛剛發現了這一點,並即將發佈爲我自己的答案 – Faust 2011-12-20 10:18:35

相關問題