2017-11-30 3 views
0

Ich habe eine benutzerdefinierte ValidateModelAttribute aber es aus irgendeinem Grund nicht BrennenC# WebAPI 2 ValidateModelAttribute Brennen nicht

using System.Net; 
using System.Web.Http.Controllers; 
using System.Net.Http; 
using System.Web.Http.Filters; 

namespace blank.Utilities.CustomAttributes 
{ 
    public class ValidateModelAttribute : ActionFilterAttribute 
    { 
     public override void OnActionExecuting(HttpActionContext actionContext) 
     { 
      if (actionContext.ModelState.IsValid == false) 
      { 
       actionContext.Response = actionContext.Request.CreateErrorResponse(
        HttpStatusCode.BadRequest, actionContext.ModelState); 
      } 
     } 
    } 
} 

Hier ist ein Beitrag

[ValidateModelAttribute] 
    [HttpPost] 
    [Route("update")] 
    public IHttpActionResult Post(ActivityPctCompleteDto actDto) { 
     _activityService.UpdatePctComplete(actDto); 
     return Ok(); 
    } 

Ich habe fromBody und fromUri in der Post hinzugefügt, aber es funktioniert nicht. Was fehlt mir hier?

Hier ist meine Dto

public class ActivityPctCompleteDto 
{ 
    [Required(ErrorMessage = "ActivityID is an invalid Guid value.")] 
    public Guid? Id { get; set; } 

    [Required(ErrorMessage = "PctComplete is an invalid Decimal(5,4) value.")] 
    public decimal? PctComplete { get; set; } 
} 

Antwort

0

ich Ihren Code und Action-Filter funktioniert gut für mich ausprobiert habe. Zur Diagnose Ihres Problems prüfen Sie folgendes:

  1. Sind Sie ActionFilterAttribute von System.Web.Http.Filters Namespace? Es gibt eine gemeinsame Konfusion mit Filtern von System.Web.Mvc.
  2. Welches HTTP-Ergebnis erhalten Sie für Ihre Anfrage? Kann es sein, dass es in früheren Phasen der ASP.NET-Pipeline fehlschlägt, z. B. beim Routing oder bei der Authentifizierung?
  3. Sind Sie sicher, dass genau diese Post() Methode die Anfrage bearbeitet? Versuchen Sie, den Haltepunkt zu setzen und zu überprüfen, ob er trifft.
+0

1. Ja, ich habe und ich habe meinen Teil des Codes in meiner Frage aktualisiert. 2. 200 OK. 3. Ja, die Werte sind null, wenn nicht der richtige Typ. Ich muss hier etwas Einfaches vermissen. –

+0

Ich habe es auch in der filterconfig.cs registriert –

+0

Seltsam, Ihr Aktion Filter funktioniert gut für mich und aus bereitgestellten Snippets ist es unklar, was die Ursache Ihres Problems ist. Könnten Sie die gesamte Lösung auf GitHub veröffentlichen oder das Archiv mit ihr auf einen öffentlichen Speicher hochladen? – CodeFuller