【发布时间】:2014-05-20 15:16:54
【问题描述】:
我有一个像下面这样的模型
public class MyModel : IValidatableObject
{
[DisplayName("Property Name")]
[Range(0, 9999999, ErrorMessage = "Please enter a number between 0 and 9999999")]
public int? PropName { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (this.PropName == null)
{
yield return new ValidationResult("Property Name is NOT entered");
}
}
}
在视图中,
- 当我输入整数值时,我没有看到错误消息“未输入属性名称”
- 当我将该字段留空时,我看到错误消息“未输入属性名称”
- 当我输入十进制值时,我看到下面的错误消息
- 值“xx.xx”对于属性名称无效。
- 未输入属性名称
对于案例 3,我当然没想到会看到来自 Validate() 方法的消息。即 Validate() 方法不应该在数据类型出现错误时触发。
谁能解释一下为什么会这样?
视图只是使用@Html.ValidationSummary() 来显示消息。
【问题讨论】:
标签: c# asp.net-mvc validation asp.net-mvc-4 razor