簡體   English   中英

創建定制模型驗證屬性

[英]Creating custom model validation attribute

我正在嘗試模擬[ApiController]屬性的行為以進行模型驗證,但是我想在JSON中的Error數組中返回使用驗證錯誤制作的JSON對象。

我面臨的挑戰是我不確定如何從Attribute中訪問驗證錯誤,並且我想在類級別使用該屬性,因此它可以在所有控制器方法上運行,而無需為其提供屬性每個動作。

任何方向將不勝感激。

編輯:鏈接重復項是如何創建自定義屬性。 我正在尋找如何從屬性中訪問模型驗證錯誤。

我能夠弄清楚我的問題。 我能夠在OnActionExecuting方法中利用ModelState.IsValid來訪問錯誤。 不幸的是,我對制作類級別的屬性還不夠熟悉,因此我必須將其應用於所有post / patch方法,以使其起作用。 如果有人想出一種輕松做到這一點的方法,請告訴我!

Project.Structure用於為那些好奇的人格式化JSON。

using System;
using System.Collections.Generic;
using System.Linq;
using Project.Structure;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;

namespace Project.Attributes
{
   public class ValidateModelAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext context)
        {
            if (!context.ModelState.IsValid)
            {
                var errorList = new List<string>();
                foreach (var modelError in context.ModelState.Values)
                {
                    errorList.AddRange(modelError.Errors.Select(error => error.ErrorMessage));
                }

                var response = new ResponseDto<object>
                {
                    Success = false,
                    TransactionId = Guid.NewGuid().ToString(),
                    ResponseType = ResponseType.Operation.Description(),
                    Response = null,
                    Errors = errorList,
                    Warnings = null
                };

                context.Result = new BadRequestObjectResult(response);
            }
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM