Ian*_*son 12 validation asp.net-mvc
我正在使用ASP.NET MVC2并尝试使用System.ComponentModel.DataAnnotations命名空间中的属性验证我的视图模型.
如何动态设置RangeAttribute的允许有效范围?例如,如果我想验证输入的日期是否在预期范围内.
这不编译:
[Range(typeof(DateTime),
DateTime.Today.ToShortDateString(),
DateTime.Today.AddYears(1).ToShortDateString())]
public DateTime DeliveryDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
因为"属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式".
我是否需要求助于创建自己的自定义验证器?
Ian*_*son 15
好的,找到了答案..NET Framework 4提供了一个新的CustomValidationAttribute,它可以实现以下功能:
[Required]
[DisplayName("Ideal Delivery Date")]
[CustomValidation(typeof(HeaderViewModel), "ValidateDeliveryDate")]
public DateTime DeliveryDate { get; set; }
public static ValidationResult ValidateDeliveryDate(DateTime deliveryDateToValidate)
{
if (deliveryDateToValidate.Date < DateTime.Today)
{
return new ValidationResult("Delivery Date cannot be in the past.");
}
if (deliveryDateToValidate.Date > DateTime.Today.AddYears(1))
{
return new ValidationResult("Delivery Date must be within the next year.");
}
return ValidationResult.Success;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11302 次 |
| 最近记录: |