0
我正在为modelstate验证创建自定义过滤器。 但我得到上述错误,我不明白。类型'ValidationModelActionFilterAttribute'必须来自'Microsoft.AspNetCore.Mvc.Filters.IFilterMetadata'。' IN asp.net核心WEB API
Startup.cs
services.AddMvc(opts =>
{
opts.Filters.Add(typeof(ValidationModelActionFilterAttribute));
});
ValidationModelActionFilterAttribute.cs
public class ValidationModelActionFilterAttribute :ActionFilterAttribute
{
public ValidationModelActionFilterAttribute()
{
}
public override void OnActionExecuting(ActionExecutingContext context)
{
if (!context.ModelState.IsValid)
{
context.Result = new BadRequestObjectResult(new ValidationResultModel(context.ModelState));
}
}
}
ValidationResultModel.cs
public class ValidationResultModel
{
public string Message { get; }
public List<ValidationError> Errors { get; }
public ValidationResultModel(ModelStateDictionary modelState)
{
Message = "Validation Failed";
Errors = modelState.Keys.SelectMany(key => modelState[key].Errors.Select(x => new ValidationError(key, x.ErrorMessage))).ToList();
}
}
'IFilterMetadata'看起来像一个空的接口,可你只是把它添加到您的属性? – DavidG
已尝试不起作用 – maxspan
“不起作用”以何种方式? – DavidG