[英]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.