zoukankan      html  css  js  c++  java
  • 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接口,

    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()就能客户端校验了

  • 相关阅读:
    nginx相关总结
    nginx 虚拟主机+反向代理+负载均衡
    linux文本查看与搜索
    mysqldump导出数据出现问题
    转载 | 缩小浏览器窗口右边出现空白
    转载 | Sublime Text3 安装以及初次配置
    转载 | Sublime text3 实用快捷键整理
    转载 | SVG向下兼容优雅降级方法
    CSS等分布局方法
    如何用实现文字环绕图片?
  • 原文地址:https://www.cnblogs.com/Jack-Blog/p/4266518.html
Copyright © 2011-2022 走看看