• .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);
            }
  • 相关阅读:
    ORACLE SEQUENCE 介绍
    cocos2d 游戏开发:Cocos2d v3 &quot;hello world&quot;+显示飞船
    无线网络覆盖
    解决xShell4某些情况下按删除键会输出^H的问题
    Android开发经验之—intent传递大数据
    简单的REST的框架实现
    ListView 使用方法(Asp.Net)
    POJ2528 Mayor&#39;s posters 【线段树】+【成段更新】+【离散化】
    C#反射Assembly 具体说明
    HDU 4432 Sum of divisors (进制模拟)
  • 原文地址:https://www.cnblogs.com/yxcn/p/13415820.html
Copyright © 2020-2023  润新知