• MVC自定义Attribute 服务端校验和客户端校验


    MVC 自定义Attribute 服务端校验和客户端校验

    自定义AOP标签

    vs已经完成部分Attributte:Required,表示该值为必须的,[EmailAddress]表面该为邮箱地址
    在属性上直接上标签即可验证是否满足该属性
    若需要自定义标签则可以自定义类继承自ValidationAttribute,重载IsVaild,在里面写入验证语句即可
    

    如:自定义一个IDNumberAttribute,用于验证是否为合法身份证

    public class IDNumberAttribute : ValidationAttribute, IClientValidatable
    {
        public override bool IsValid(object value)
        {
            string idnumber = value.ToString();
            if (string.IsNullOrEmpty(idnumber)) return true;//为空表示不验证,直接返回,属性只有加入Required标签才验证是否为空,这里只验证是否满足格式
            if (idnumber.Length != 15 || idnumber.Length != 18)//身份证为15或18位
            {
                return false;
            }
            if ((char.ToLower(idnumber[idnumber.Length - 1]) == 'x' &&idnumber.Substring(0,idnumber.Length-1).All(s=>char.IsDigit(s)))
                ||idnumber.All(s=>char.IsDigit(s)))
            {
                return true;
            }
            return false;
        }
    }
    

    PS:这里只是简单的验证格式 至此这里就定义好了,验证:

    [IDNumber]
    public string IDNumber{get;set;}

    若需要加入客户端校验 只需实现IClientValidatable接口的GetClientValidationRules方法,

    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
    {
        return new List<ModelClientValidationRule>
        {
            new ModelClientValidationRule{
                 ValidationType = "IDNumber",
                 ErrorMessage = "请输入正确的身份证号"
            }       
        }
    };
    

    同时需要确认开启了客户端校验 ,在web.config 的appsetting节点下加入 <add key="ClientValidationEnabled" value="true">
    <add key="UnobtrusiveJavaScriptEnabled" value="true">

    在网页写入@Html.ValidationSummary()就能客户端校验了

    出处:https://www.cnblogs.com/Jack-Blog/p/4266518.html

  • 相关阅读:
    How to debug with IntelliJ IDEA + Grails 2.3.x (转)
    Lucene教程具体解释
    html中滚动栏的样式
    centos下ant的安装
    qt的资源替换搜索QDir具体解释
    strtok和strtok_r
    文件读写、游标
    Rational Rose 2007 &amp;Rational Rose 2003 下载及破解方法和汉化文件下载
    算法6-5:哈希表应用之集合
    javaEE jdbc编程步骤
  • 原文地址:https://www.cnblogs.com/mq0036/p/12748531.html
Copyright © 2020-2023  润新知