zoukankan      html  css  js  c++  java
  • .net core入参验证 ---ValidationAttribute

    思路:使用自定义特性方法,继承ValidationAttribute,为入参Model添加特性

    using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
    using Microsoft.CodeAnalysis;
    using Nebula.Sites.AuditLog.Controllers;
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    
    namespace Nebula.Sites.AuditLog.Dto
    {
      [AuditLogValidation]
      public class AuditLogDto
      {/// <summary>
        /// 原数据记录ID
        /// </summary>
        public string RecordID { get; set; }/// <summary>
        /// 操作类型:Insert,Delete,Update
        /// </summary>
        public string OperateType { get; set; }
    
        /// <summary>
        /// 操作人
        /// </summary>
        public string Operater { get; set; }    
      }
    
      /// <summary>
      /// 参数验证
      /// </summary>
      public class AuditLogValidationAttribute : ValidationAttribute
      {
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
          var LogRequest = (AuditLogDto)value;string OperateType = LogRequest.OperateType.ToUpper();
          if (OperateType != "INSERT" && OperateType != "DELETE" && OperateType != "UPDATE")
          {
            throw new Exception( "OperateType Parameter error" );
          }return new ValidationResult( "Verified" );
        }
      }
    }

    由此,调用端无需做任何操作(且支持List<Model>)

            /// <summary>
            /// 批量操作
            /// </summary>
            /// <param name="LogRequest"></param>
            [HttpPost]
            public void WriteLogs([FromBody] List<AuditLogDto> LogRequest)
            {
                //多组数据,必须全部验证通过才入库
                foreach (var log in LogRequest)
                {
                    GetLogDB(log);
                }
            }
    
            /// <summary>
            /// 单条操作
            /// </summary>
            /// <param name="LogRequest"></param>
            [HttpPost]
            public void WriteLog([FromBody] AuditLogDto LogRequest)
            {
                //入库
                GetLogDB(LogRequest);
            }
  • 相关阅读:
    索引yellow 分片 UNASSIGNED 解决方案1
    Linux zip压缩多文件
    查询数据库实例名,服务名,和oracle_sid
    excel2csv 多sheet拆分到不同csv
    创建按月自动分区表
    自动生成sequence
    oracle 11g 分区表创建(自动按年、月、日分区)
    linux 查找字符串
    Oracle 字符串截取和位置
    mongodb查询某个字段数据
  • 原文地址:https://www.cnblogs.com/yxcn/p/13415820.html
Copyright © 2011-2022 走看看