1
0

ValidateInputAttribute.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. using Admin.Core.Common.Output;
  2. using Microsoft.AspNetCore.Http;
  3. using Microsoft.AspNetCore.Mvc;
  4. using Microsoft.AspNetCore.Mvc.Filters;
  5. using Microsoft.Extensions.Logging;
  6. using System;
  7. using System.Linq;
  8. namespace Admin.Core.Attributes
  9. {
  10. /// <summary>
  11. /// 输入模型验证
  12. /// </summary>
  13. [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true)]
  14. public class ValidateInputAttribute : ActionFilterAttribute
  15. {
  16. public override void OnResultExecuting(ResultExecutingContext context)
  17. {
  18. if (!context.ModelState.IsValid)
  19. {
  20. try
  21. {
  22. var logger = (ILogger<ValidateInputAttribute>)context.HttpContext.RequestServices.GetService(typeof(ILogger<ValidateInputAttribute>));
  23. var errorMessages = context.ModelState.Values.First().Errors.Select(a => a.ErrorMessage);
  24. logger.LogError(string.Join(",", errorMessages));
  25. context.Result = new JsonResult(ResponseOutput.NotOk(errorMessages.First()));
  26. }
  27. catch
  28. {
  29. context.Result = new StatusCodeResult(StatusCodes.Status500InternalServerError);
  30. }
  31. }
  32. }
  33. }
  34. }