zoukankan      html  css  js  c++  java
  • 模型/数据验证(System.ComponentModel.DataAnnotations)笔记

    1.

    、、

    2.案例:具体参照:https://www.jianshu.com/p/ca44d2ffa974

    Models:

    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    
    namespace WebApplication1.Models
    {
    
        public class UserModel
        {
            [Required(ErrorMessage = "{0} 必须填写")]  // 必须
            public string UserID { get; set; }
    
            /// <summary>
            /// 姓名
            /// </summary>
            [MaxLength(10, ErrorMessage = "超出字符长度")]
            [MinLength(2, ErrorMessage = "最短字符长度为2")]
            public string UserName { get; set; }
    
            /// <summary>
            /// 年龄
            /// </summary>
            [Required(ErrorMessage = "{0} 必须填写")]
            [Range(18, 100)]
            public int Age { get; set; }
    
            /// <summary>
            /// 性别:1表示男,2表示女
            /// </summary>
            [RegularExpression(@"[1|2]+", ErrorMessage = "性别不正确")]  // 正则规则
            public int Sex { get; set; }
        }
        public class ValidResult
        {
            public List<ErrorMember> ErrorMembers { get; set; }
            public bool IsVaild { get; set; }
        }
    
        public class ErrorMember
        {
            public string ErrorMessage { get; set; }
            public string ErrorMemberName { get; set; }
        }
    }

    逻辑层处理:

            /// <summary>
            /// 逻辑处理
            /// </summary>
            /// <param name="value"></param>
            /// <returns></returns>
            private static ValidResult IsValid(object value)
            {
                ValidResult result = new ValidResult();
                try
                {
                    var validationContext = new ValidationContext(value);
                    var results = new List<ValidationResult>();
                    var isValid = Validator.TryValidateObject(value, validationContext, results, true);
    
                    if (!isValid)
                    {
                        result.IsVaild = false;
                        result.ErrorMembers = new List<ErrorMember>();
                        foreach (var item in results)
                        {
                            result.ErrorMembers.Add(new ErrorMember()
                            {
                                ErrorMessage = item.ErrorMessage,
                                ErrorMemberName = item.MemberNames.FirstOrDefault()
                            });
                        }
                    }
                    else
                    {
                        result.IsVaild = true;
                    }
                }
                catch (Exception ex)
                {
                    result.IsVaild = false;
                    result.ErrorMembers = new List<ErrorMember>();
                    result.ErrorMembers.Add(new ErrorMember()
                    {
                        ErrorMessage = ex.Message,
                        ErrorMemberName = "Internal error"
                    });
                }
    
                return result;
            }

    验证失败处理(可以逻辑层验证封装成一个静态类):

     #region 逻辑处理
                UserModel person = new UserModel();
                person.UserID = "";
                person.UserName = "K";
                person.Age = 100000;
                person.Sex = 3000;
                var result = IsValid(person);
                if (!result.IsVaild)
                {
                    // 验证失败处理
                    foreach (ErrorMember errorMember in result.ErrorMembers)
                    {
                        Console.WriteLine(errorMember.ErrorMemberName + "" + errorMember.ErrorMessage);
                    }
                }
                #endregion
  • 相关阅读:
    js_浏览器对象模型BOM---通过对象来抽象浏览器功能
    js_dom 之事件注册、移除 、pageX
    js组成之dom_dom对象样式操作及运用
    js_组成之DOM_dom对象的注册事件及属性操作
    js_字符串、数组常用方法及应用
    js_内置对象Date Math
    Caffe入门学习(代码实践)
    char和uchar区别
    c/c++中过滤文件路经 后缀
    shell中$(( )) 、 $( ) 、${ }的区别
  • 原文地址:https://www.cnblogs.com/namejr/p/13681132.html
Copyright © 2011-2022 走看看