asp.net-mvc-3 – MVC模型范围验证器?
发布时间:2020-07-09 06:47:28  所属栏目: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的三种缓存提高站点性能的注意方法
 - ASP.Net Web应用程序安全性不适用于IIS 7?
 - asp.net-mvc – ViewModel中的最佳实践
 - 如何保护我的ASP.NET AJAX应用程序?
 - asp.net-mvc-3 – dataannotations在主键上设置标识种子值,
 - asp.net-mvc-3 – Azure网站上的RavenDb – 访问被拒绝
 - asp.net – 在调用异步方法时不使用等待来防止死锁
 - asp.net-mvc – Url.Action生成查询字符串,以任何方式生成完
 - asp.net-mvc – 如何设置AntiForgeryToken cookie路径
 - asp.net – 如何从复选框列表中获取最新的选定值?
 
推荐文章
            站长推荐
            - 在asp.net c#应用程序中使用Graphviz Dll
 - asp.net – UserControl Viewstate在回发后丢失所
 - ASP.NET web.config文件是否失控?
 - asp.net-mvc – 是否可以为post和get提供重复的动
 - asp.net core webapi 服务端配置跨域的实例
 - asp.net-mvc – 在MVC命令,优先级和功能问题中授
 - ASP.NET中操作SQL数据库(连接字符串的配置及获取
 - 为什么asp.net会员资格有用户表和会员表?
 - ASP.NET web.config中数据库连接字符串connectio
 - 什么OverrideAuthenticationAttribute是为什么?
 
热点阅读
            