1

Étant donné que j'ai un modèle employé avec un annulable GenderIDASP.NET Web API 2.2 Modèle court-circuit de liaison validation du modèle personnalisé

public class Employee 
{   
    public int? GenderID { get; set; }  
} 

Et une règle personnalisée Fluent validation sur GenderID en utilisant FluenValidation

RuleFor(x=> x.GenderID).NotNull().WithMessage("Please provide a valid Gender"); 

Lorsque je POST un employé à l'extrémité suivante avec un NULL GenderID

Puis le service renvoie une validation résumé comme prévu.

[HttpPost("Employee/Create")] 
    public IActionResult Create([FromBody]Employee employee) 
    { 
     try 
     {    
      if (!ModelState.IsValid) 
      { 
       // return validation summary (code omitted for brevity) 
      } 

      var result = _respository.CreateEmployee(employee);    

      return Ok(); 
     } 
    } 

Si je change le modèle de l'employé d'avoir non annulable GenderID

public class Employee 
{   
    public int GenderID { get; set; }  
} 

retourne ensuite le service 400 Bad réponse à la demande sans traitement validation personnalisée. Le résumé de validation est requis pour lier à l'interface utilisateur. La seule raison d'avoir GenderID comme nullable est de permettre de créer un résumé de validation à partir de validateurs personnalisés. Comment puis-je appliquer une validation personnalisée sans avoir besoin de définir toutes les propriétés de mon modèle comme étant nulles?

Répondre

0

La mauvaise demande que vous recevez est due à cause de l'erreur de convertir null GenderId à non nullable int. N'est pas lié à une validation courante. Est-ce que mon opinion si vous attendez dans la demande de recevoir un GenderId nul, vous devriez garder la propriété GenderId NULL et laissez-vous bien gérer l'erreur dans sa règle. Si vous pensez que la requête contiendra toujours un GenderId non nul, rendez GenderId non nullable. Une exception d'exécution doit être levée si le GenderId, attendu pour être toujours non nul, est à la place null.

+0

Oui J'ai déjà expliqué la raison mais j'essaye de trouver un modèle de programmation dans WebAPI qui me permette de créer des commandes plus représentatives aux valeurs acceptables. La documentation générée qui accompagnera mon API sera trompeuse lorsque je mentionnerai que GenderId peut être nul. – puri