我想在文本框中输入日期时间作为字符串。实际上有两个输入字段
两者的格式应该是00:00,所以我可以输入
从00:00
开始
到时间23:59
如何使用注释验证asp.net mvc viewmodel中的用户输入,以便限制用户输入00:00
作为最小值,23:59
作为最大值?
答案 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;}