zoukankan      html  css  js  c++  java
  • web api model 自定义验证

    web api model验证跌重要性不必说,尽早的过滤掉非法的请求

    首先自定义model 验证类 DescompareValidationAt

        public class DescompareValidationAt : ValidationAttribute
        {
    
            public override bool IsValid(object value)
            {
                if (DES.CanDescheck((string)(value)) == true)
                {
                    return true;
                }
                return false;
            }
        }

    这个类主要做des 验证,传入的参数只有是des加密过的参数,接口才予以处理。

    接着定义web api model 类,应用刚传的验证方法

    public class accountpointrequest : BaseRequestModel
        {
            [Display(Name = "会员编号")]
            [DescompareValidationAt(ErrorMessage = "会员编号不符合规范")]
            public string customer_id { get; set; }
        }

    在控制器部分通过ModelVerification(),ValidateFailMessage() 二个方法分别返回 是否model的验证结果和验证失败的错误消息

    protected bool ModelVerification()
            {
                if (ModelState.IsValid)
                {
                    return true;
                }
                else
                {
                    
                    return false;
                }
               
            }
    
            protected string ValidateFailMessage()
            {
                string VerificaError = null;
                var ErrorCollection = ActionContext.ModelState;
                var keylist = ErrorCollection.Keys.ToList();
                var keyvalues = ErrorCollection.Values.ToList();
                var Valueslist = keyvalues.ToList();
                for (var i = 0; i < Valueslist.Count; i++)
                {
                    for (var j = 0; j < Valueslist[i].Errors.Count; j++)
                    {
                        string TempString = null;
                        TempString = Valueslist[i].Errors[j].ErrorMessage.ToString2();
                        if (TempString != "")
                        {
                            VerificaError = VerificaError + Valueslist[i].Errors[j].ErrorMessage + ";";
                        }
                    }
                }
                if (VerificaError == null)
                {
                    VerificaError = Common.StatusCode.SYSTEM_EXCEPTION.Description;
                }
                return VerificaError;
            }

    得到验证失败的错误消息后就可以根据需要返回或者自己吸收掉类

  • 相关阅读:
    nginx 状态码整理
    nginx 添加perl
    Nginx 内置全局变量
    数组模板实现(新手遇到的格式问题)
    malloc的使用注意事项
    使用memset的注意事项!!!
    2019/3/31acm周三(三人)/CodeForces
    2019/3/31acm周三(三人)/LightOJ
    2019/3/31acm周三(三人)/hdu1042/高精度计算(未懂!)
    2019/3/24周赛坑题(读题)HDU 1412
  • 原文地址:https://www.cnblogs.com/hbsfgl/p/4996890.html
Copyright © 2011-2022 走看看