我的模型中有一个DateTime属性,我想使用DataAnnotations验证它。
在我看来,我希望将DateTime作为天数(例如“3”),而不是DateTime(例如“7/14/2010”)。如果用户在视图中输入“3”,则DataAnnotation会发现它无效 - 这就是问题。
在这种情况下,我有哪些选择?
非常感谢你的帮助。
答案 0 :(得分:2)
听起来你正在使用错误的类型来完成工作。 “天”中的度量是TimeSpan,而不是DateTime。我会更新您的模型以将属性公开为TimeSpan。您可以使用如下自定义验证器进行验证:
[AttributeUsage(AttributeTargets.Property|AttributeTargets.Field, AllowMultiple = false)]
public class TimeSpanAttribute: ValidationAttribute
{
public override bool IsValid(object value)
{
if (value is TimeSpan)
{
return true;
}
else if (value is String)
{
TimeSpan result;
return TimeSpan.TryParse((string)value, out result);
}
return false;
}
}
答案 1 :(得分:1)
我认为你将苹果与橙子进行比较。如果您指定您的属性是DateTime,则无法为该属性输入值3。
为什么不将这个属性设为Int?
之后,如果您需要返回DateTime ...只需使用此Integer值创建您需要添加或减去的日期,例如:
DateTime myDate = DateTime.Now.Date.AddDays(intValue);