DateTime属性上的DataAnnotations

时间:2010-07-15 01:16:15

标签: asp.net asp.net-mvc

我的模型中有一个DateTime属性,我想使用DataAnnotations验证它。

在我看来,我希望将DateTime作为天数(例如“3”),而不是DateTime(例如“7/14/2010”)。如果用户在视图中输入“3”,则DataAnnotation会发现它无效 - 这就是问题。

在这种情况下,我有哪些选择?

非常感谢你的帮助。

2 个答案:

答案 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);