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