2017-04-25 2 views
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(); 
     } 
    } 
+0

'IFilterMetadata' wie eine leere Schnittstelle aussieht, können Sie fügen Sie ihn einfach zu Ihrem Attribut? – DavidG

+0

versuchte es funktioniert nicht – maxspan

+0

"funktioniert nicht" in welcher Weise? – DavidG

Antwort

-1

Das Problem waren die Namespace. IT sollte

sein
using Microsoft.AspNetCore.Mvc; 
using Microsoft.AspNetCore.Mvc.Filters; 

NICHT

using Microsoft.AspNetCore.Mvc; 
    using Microsoft.AspNetCore.Mvc.Filters; 
Verwandte Themen