.netcore 使用Required对model数据验证

具体示例

1.创建一个要验证的类型

  来自:https://www.jianshu.com/p/cc5adac91e34

public class Movie
   {
       public int ID { get; set; }

       [StringLength(60, MinimumLength = 3)]
       [Required]
       public string Title { get; set; }

       [Display(Name = "放映日期")]
       [DataType(DataType.Date)]
       [Range(typeof(DateTime), "1/1/1966", "1/1/2020")]
       public DateTime ReleaseDate { get; set; }

       [Range(1, 100)]
       [DataType(DataType.Currency)]
       public decimal Price { get; set; }

       [RegularExpression(@"^[A-Z]+[a-zA-Z''-'\s]*$")]
       [Required]
       [StringLength(30)]
       public string Genre { get; set; }

       [RegularExpression(@"^[A-Z]+[a-zA-Z''-'\s]*$")]
       [StringLength(5)]
       [Required]
       public string Rating { get; set; }
   }

2.添加ActionFilter在请求时验证

   获取到一个错误就返回,要返回全部可以拼接错误信息返回

 public class APIActionFilter : IActionFilter
    {
        public void OnActionExecuted(ActionExecutedContext context)
        {
        } 
        public void OnActionExecuting(ActionExecutingContext context)
        {
            var modelState = context.ModelState;
            if (!modelState.IsValid)
            {
                string error = string.Empty;
                foreach (var key in modelState.Keys)
                {
                    var state = modelState[key];
                    if (state.Errors.Any())
                    {
                        error = state.Errors.First().ErrorMessage;
                        break;
                    }
                }

                PublicResponse result = new PublicResponse()
                {
                    isErro = 1,
                    errCode = "1000",
                    errmsg = error
                };

                context.Result = new JsonResult(result);
            }
        }
}

3.Startup.cs中添加对Filter的注册

 public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc(option =>
            {
                option.Filters.Add<APIActionFilter>();
            });
        }

4.划重点------去掉自动验证,不然不会走自己写的这个验证

  public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc(option =>
            {
                option.Filters.Add<APIActionFilter>();
            });
             //关闭自动验证 走过滤器进行验证
            services.Configure<ApiBehaviorOptions>(options =>         
              options.SuppressModelStateInvalidFilter = true);
        }

这样就完事了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值