作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的模型中,似乎 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
文本框为空,只有
Required
Name
的错误消息属性显示。应该从
Validate()
显示的错误消息功能永远不会出现。
Name
中输入名称后文本框和
Nicknames
中的一些文本文字是
Validate()
调用的函数。
最佳答案
这是设计使然。在所有属性都通过验证之前不会触发对象级验证,否则对象可能不完整。 Validate 方法用于将一个属性与另一个属性进行比较。在您的情况下,您应该编写一个自定义属性验证器。
关于asp.net - 为什么只有在属性验证通过时才调用 IValidatableObject.Validate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4769439/
我是一名优秀的程序员,十分优秀!