use*_*126 2 validation asp.net-mvc
我们有一个模型
public class Model
{
public int Number { get; set; }
public DateTime Date { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我观察到以下行为.如果没有提交任何值,则ModelState.IsValid的值为true,则Number属性的值为0,Date的值为1.1 0001 00:00:00.
DataAnnotationsModelValidatorProvider类和GetValidators方法具有此代码片段
// Add an implied [Required] attribute for any non-nullable value type,
// unless they've configured us not to do that.
if (AddImplicitRequiredAttributeForValueTypes &&
metadata.IsRequired &&
!attributes.Any(a => a is RequiredAttribute)) {
attributes = attributes.Concat(new[] { new RequiredAttribute() });
}
Run Code Online (Sandbox Code Playgroud)
如果我理解这一点,那么Number属性和DateTime属性应该设置一个RequiredAttribute,验证例程应该设置模型无效并生成相应的错误消息.
所以我的问题是为什么模型无效?
我正在使用ASP.NET MVC 3
所以我的问题是为什么模型无效?
因为它0是一个完全有效的整数,并且1.1 0001 00:00:00是完全有效的DateTime.我不明白你为什么期望你的模型无效.
使用可以使用属性的可空和装饰来实现所需的效果:
public class Model
{
[Required]
public int? Number { get; set; }
[Required]
public DateTime? Date { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1536 次 |
| 最近记录: |