我正在为模型状态验证创建自定义过滤器。 但是我得到了上面的错误,我无法弄明白。
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();
}
}
答案 0 :(得分:0)
有两个版本的 ActionFilterAttribute
Microsoft.AspNetCore.Mvc.Filters.ActionFilterAttribute
System.Web.Http.Filters.ActionFilterAttribute
确保根据您的项目类型和控制器类型使用正确的
如果项目是 aso.net core 使用第一个
答案 1 :(得分:-1)
问题是名称空间。 IT应该
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
不会强>
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;