zoukankan      html  css  js  c++  java
  • webapi输入验证过滤器ValidationActionFilter

    public class validationActionFilter:ActionFilterAttribute
        {
            public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
            {
                var modelState = actionContext.ModelState;
                if(!modelState.IsValid)
                {
                    dynamic errors = new JObject ( );
                    foreach(var key in modelState.Keys)
                    {
                        var state = modelState[key];
                        if(state.Errors.Any ( ))
                        {
                            errors[key] = state.Errors.First ( ).ErrorMessage;
                        }
                    }
                    actionContext.Response = new HttpResponseMessage ( HttpStatusCode.BadRequest )
                    {
                        Content = new StringContent ( Convert.ToString ( errors ) )
                    };
                }
    
            }
    
        }
    public class ValidationActionFilter : ActionFilterAttribute
        {
            public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
            {
                var modelState = actionContext.ModelState;
                if (!modelState.IsValid)
                {
                    ApiResult result = new ApiResult();
                    result.code = ApiResultCode.fail;
                    result.msg = "输入数据验证失败";
                    //找到出错的字段以及出错信息
                    var errorFieldsAndMsgs = modelState.Where(m => m.Value.Errors.Any())
                        .Select(x => new { x.Key, x.Value.Errors });
                    result.desc = string.Join(",", errorFieldsAndMsgs.SelectMany(p => p.Errors.Select(t => t.ErrorMessage)).ToArray());
    
                    actionContext.Response = new HttpResponseMessage(HttpStatusCode.BadRequest)
                    {
                        Content = new StringContent(JsonConvert.SerializeObject(result))
                    };
                }
    
            }
    public class ValidationActionFilter : ActionFilterAttribute
        {
            public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
            {
                var modelState = actionContext.ModelState;
                if (!modelState.IsValid)
                {
                    ApiResult result = new ApiResult();
                    result.code = ApiResultCode.fail;
                    result.msg = "输入数据验证失败";
                    //找到出错的字段以及出错信息
                    var errorFieldsAndMsgs = modelState.Where(m => m.Value.Errors.Any())
                        .Select(x => new { x.Key, x.Value.Errors });
                    result.desc = string.Join(",", errorFieldsAndMsgs.SelectMany(p => p.Errors.Select(t => t.ErrorMessage)).ToArray());
    
                    actionContext.Response = new HttpResponseMessage(HttpStatusCode.BadRequest)
                    {
                        Content = new StringContent(JsonConvert.SerializeObject(result))
                    };
                }
    
            }
  • 相关阅读:
    设置函数环境——setfenv(转)
    全局变量声明的规范化(转)
    利用__index和__newindex实现默认值表、监控表、只读表(转)
    php中的$_GET怎样获取带有井号“#”的參数
    Servlet配置load-on-startup
    LinQ—扩展方法
    CRT
    [C++] 获取IE代理server的账号password
    一步一步写算法(之hash表)
    android之PackageManager简单介绍
  • 原文地址:https://www.cnblogs.com/shiningrise/p/5695693.html
Copyright © 2011-2022 走看看