asp.net-mvc-3 – MVC模型范围验证器?
发布时间:2020-07-09 09:10:49 所属栏目:asp.Net 来源:互联网
导读:我想验证日期时间,我的代码是: [Range(typeof(DateTime), DateTime.Now.AddYears(-65).ToShortDateString(), DateTime.Now.AddYears(-18).ToShortDateString(), ErrorMessage = Value for {0} must be between
我想验证日期时间,我的代码是: [Range(typeof(DateTime),DateTime.Now.AddYears(-65).ToShortDateString(),DateTime.Now.AddYears(-18).ToShortDateString(),ErrorMessage = "Value for {0} must be between {1} and {2}")] public DateTime Birthday { get; set; } 但我得到错误: An attribute argument must be a constant expression,typeof expression or array creation expression of an attribute parameter type 请帮帮我? 解决方法这意味着Range属性的值不能在以后确定,必须在编译时确定. DateTime.Now不是常量,它根据代码运行的时间而变化.你想要的是一个自定义DataAnnotation验证器.以下是如何构建一个示例: How to create Custom Data Annotation Validators 将您的日期验证逻辑放在IsValid()中 这是一个实现.我也使用DateTime.Subtract()而不是负数年. public class DateRangeAttribute : ValidationAttribute { public int FirstDateYears { get; set; } public int SecondDateYears { get; set; } public DateRangeAttribute() { FirstDateYears = 65; SecondDateYears = 18; } public override bool IsValid(object value) { DateTime date = DateTime.Parse(value); // assuming it's in a parsable string format if (date >= DateTime.Now.AddYears(-FirstDateYears)) && date <= DateTime.Now.AddYears(-SecondDateYears))) { return true; } return false; } } 用法是: [DateRange(ErrorMessage = "Must be between 18 and 65 years ago")] public DateTime Birthday { get; set; } 它也是通用的,因此您可以指定多年的新范围值. [DateRange(FirstDateYears = 20,SecondDateYears = 10,ErrorMessage = "Must be between 10 and 20 years ago")] public DateTime Birthday { get; set; } (编辑:鲜蔬坊站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net中使用repeater和PageDataSource搭配实现分页代码
- asp.net-mvc – ASP.NET MVC获取具有特定配置文件属性的用户
- 这是一个bug?浮动操作被视为整数
- asp.net-mvc – 已经使用相同的参数类型定义了一个名为“Cr
- asp.net-mvc – LINQ to SQL分页和COUNT(*)
- asp.net-mvc – asp.net MVC应该是View-Model封装域模型吗?
- asp.net(C#)把汉字转化成全拼音函数(全拼)
- asp.net-mvc – ControllerActionInvoker
- .net – ELMAH对企业库异常处理块
- asp.net – 从启用AJAX的WCF服务返回错误详细信息
推荐文章
站长推荐
- asp.net-mvc – 如何将ASP.Net MVC路径段中的1或
- asp.net 结合mysql存储过程进行分页代码
- 详解Asp.net Core 使用Redis存储Session
- 在ASP.net中使用NVP API时,PayPal SetExpressChe
- asp.net-mvc – 在ASP.NET MVC 4中未加载的捆绑包
- ASP.NET:从C#代码隐藏显示警报
- asp.net – NHibernate – ManagedWebSessionCon
- asp.net-identity交易问题
- asp.net-core – .NET Core SDK安装程序无法在Wi
- ASP.NET基于Ajax的Enter键提交问题分析
热点阅读