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);
            }
  • 相关阅读:
    《人月神话》阅读笔记02
    学习进度条-4
    课堂作业3
    MySql 8.0及对应驱动包匹配注意点
    关于Ubuntu中Could not get lock /var/lib/dpkg/lock解决方案
    STM32之ADC配置,ADC_Mode模式理解
    STM32串口中断的方式发送
    RTC 与RCC 之间的关系
    stm32 MDK5软件仿真之查看io口输出
    STM32 PWM学习
  • 原文地址:https://www.cnblogs.com/yxcn/p/13415820.html
Copyright © 2011-2022 走看看