客户端验证:仅允许来自日历的旧日期

时间:2016-10-13 13:24:31

标签: c# asp.net-mvc razor

如果我在BirthDate属性之前的模型中有此代码,如何允许用户只输入旧日期?

[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]
public System.DateTime BirthDate { get; set; }

这可以在不使用JavaScript的情况下实现吗?如果是,怎么样?

1 个答案:

答案 0 :(得分:0)

您应该将RangeAttribute扩展为装饰DateTime模型字段。

您可以创建一个新的验证属性:BirthDateAttribute

public class BirthDateAttribute : RangeAttribute {

   public BirthDateAttribute() 
                   : base(
                           typeof(DateTime), 
                           DateTime.Now.AddYears(-120).ToShortDateString(), 
                           DateTime.Now.AddDays(-1)ToShortDateString()
                     ) { } 
}

然后,您可以应用它来装饰您的DateTime属性:

[BirthDateAttribute]
[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]
public System.DateTime BirthDate { get; set; }