10
在我的模型中,似乎Validate()
僅在兩個屬性通過驗證後才被調用。爲什麼僅在屬性驗證通過時調用IValidatableObject.Validate?
public class MyModel : IValidatableObject
{
[Required]
public string Name { get; set;}
[Required]
public string Nicknames {get; set;}
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if(Nicknames != null && Nicknames.Split(Environment.NewLine.ToCharArray()).Count() < 2)
return yield result new ValidationResult("Enter at least two nicknames, new [] { "Nicknames" });
}
}
當用戶進入在Nicknames
文本區域中的文本的一行但離開Name
文本框爲空,則僅顯示爲Name
屬性Required
錯誤消息。應該從Validate()
函數中顯示的錯誤消息從不出現。
只有在Name
文本框中輸入名稱和Nicknames
文本中的某些文本後,纔會調用Validate()
函數。
這是應該如何工作?在當前頁面上導致錯誤時,用戶在隨後的頁面上顯示錯誤消息似乎很奇怪。
如果驗證方法包含屬性驗證的結果,我們可以自己檢查。即void IValidatableObject.Validate(List result,ValidationContext validationContext) –
2011-01-26 09:43:28