思路:使用自定义特性方法,继承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);
        }

 

相关文章:

  • 2022-01-01
  • 2021-09-03
  • 2022-12-23
  • 2022-01-18
  • 2021-10-27
  • 2021-12-26
  • 2021-05-19
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-07-08
  • 2022-12-23
  • 2021-08-19
  • 2022-12-23
  • 2022-01-03
相关资源
相似解决方案