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);
            }
  • 相关阅读:
    poj2481 线段树(单点更新)
    二叉查找树 hdu(3791 && 3999)
    计算机科学32个最重要的算法
    03最小路径覆盖问题
    02太空飞行计划问题
    hdu 2448最短路+最佳匹配
    poj1419 最大团
    hdu 3585(二分+最大团)
    hdu 3622 2-SAT
    hdu3592差分约束
  • 原文地址:https://www.cnblogs.com/yxcn/p/13415820.html
Copyright © 2011-2022 走看看