モデルに Datetime フィールドがあり、作成時にNowと6 Years Priorの間に収まるように検証する必要があります。次のような範囲を使用してみました
[Range(DateTime.Now.AddYears(-6), DateTime.Now)]
public DateTime Datetim { get; set; }
しかし、これはエラーをスローし、システムの日時を倍精度に変換できません。モデル自体でこれに対する回避策を提案できる人はいますか?
モデルに Datetime フィールドがあり、作成時にNowと6 Years Priorの間に収まるように検証する必要があります。次のような範囲を使用してみました
[Range(DateTime.Now.AddYears(-6), DateTime.Now)]
public DateTime Datetim { get; set; }
しかし、これはエラーをスローし、システムの日時を倍精度に変換できません。モデル自体でこれに対する回避策を提案できる人はいますか?
Range
型とその型の境界値を受け入れ、次のようなものを許可する属性のオーバーロードがありますが:
[Range(typeof(DateTime), "1/1/2011", "1/1/2012", ErrorMessage="Date is out of Range")]
この属性を使用して達成しようとしていることは不可能です。問題は、属性がパラメーターとして定数のみを受け入れることです。明らかに定数でも定数DateTime.Now
でもありませんDateTime.Now.AddYears(-6)
。
ただし、独自の検証属性を作成してこれを行うこともできます。
public class DateTimeRangeAttribute : ValidationAttribute
{
//implementation
}
次の属性を使用します。
public class CustomDateAttribute : RangeAttribute
{
public CustomDateAttribute()
: base(typeof(DateTime),
DateTime.Now.AddYears(-6).ToShortDateString(),
DateTime.Now.ToShortDateString())
{ }
}