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