• 模型/数据验证(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
  • 相关阅读:
    [LeetCode#260]Single Number III
    1 sql server中添加链接服务器
    1 sql server 中cursor的简介
    1 .net将xml反序列化
    1 C# 将对象序列化
    1 SQL SERVER 实现字符串分割成table的方法
    1 asp.net 中如何把用户控件应用于母版页
    1 .net中自定义事件的步骤
    .NET中跨线程访问winform控件的方法
    1 sql server 中merge的用法
  • 原文地址:https://www.cnblogs.com/namejr/p/13681132.html
Copyright © 2020-2023  润新知