0
Ich erstelle einen benutzerdefinierten Filter für Modelstat Validierung. Aber ich bekomme den obigen Fehler, den ich nicht herausfinden kann.Der Typ 'ValidationModelActionFilterAttribute' muss von 'Microsoft.AspNetCore.Mvc.Filters.IFilterMetadata' abgeleitet sein. ' IN asp.net Kern 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' wie eine leere Schnittstelle aussieht, können Sie fügen Sie ihn einfach zu Ihrem Attribut? – DavidG
versuchte es funktioniert nicht – maxspan
"funktioniert nicht" in welcher Weise? – DavidG