使用注释进行时间验证

时间:2014-05-22 11:48:32

标签: c# asp.net-mvc

我想在文本框中输入日期时间作为字符串。实际上有两个输入字段

  • 从时间开始
  • 到时间

两者的格式应该是00:00,所以我可以输入

00:00开始 到时间23:59

如何使用注释验证asp.net mvc viewmodel中的用户输入,以便限制用户输入00:00作为最小值,23:59作为最大值?

2 个答案:

答案 0 :(得分:2)

您可以创建一个自定义属性,您可以使用它来装饰您的属性。

namespace JensB.Tools.CustomAttributes
{
    public class IsDateOk: ValidationAttribute
    {
        public override bool IsValid(object value)
        {
            if (value == null) return false;
            if (value.GetType() != typeof(DateTime)) throw new InvalidOperationException("can only be used on DateTime properties.");
            bool isValid = // do validation here

            return isValid;
        }
    }
}

然后您可以这样装饰您的财产:

[IsDateOk(ErrorMessage="Dates must be .....")]
public property DateTime MyTime {get; set ;}

关于这样做的好处是你基本上不需要在前端编码任何东西,只需要显示@Html.ValidationMessageFor( x=> ....)来使这个工作

答案 1 :(得分:0)

使用正则表达式,您可以验证您的模型,客户端验证也可以使用它 喜欢

[RegularExpression(@"^(0[1-9]|1[0-2]):[0-5][0-9] (am|pm|AM|PM)$", ErrorMessage = "Error message")]
public string FromTime {get;set;}