2015-12-23 1 views
0

j'ai une classe appelée MyMethodQuery qui contient une propriété d'entrée de ma méthode webpropriété vide ne pas causer un échec de validation malgré StringLength attribut

[DataContract()] 
public class MyMethodQuery 
{ 
    [DataMember(IsRequired = true)] 
    [StringLength(100, MinimumLength = 10)] 
    public string Id{ get; set; } 
} 

Ma méthode Web:

public string MyMethod(MyMethodQuery MyMethodQuery) 
{ 
    return "it's ok !"; 
} 

I vouloir lancer une exception si je laisse la propriété vide. Mais cela ne fonctionne pas malgré l'attribut StringLength.

Je teste ma méthode avec SoapUI.

Répondre

0

Ces attributs ne sont pas censés fonctionner dans ce contexte "out of the box". La classe Validator est le point d'entrée dans le monde de la validation, et vous devrez l'appeler manuellement.

Voir this answer pour un exemple.

0
[DataContract()] 
public class MyMethodQuery: IValidatableObject 
{ 
    [DataMember(IsRequired = true, EmitDefaultValue = false)] 
    [StringLength(500, MinimumLength = 5)] 
    public string Id { get; set; } 

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) 
    { 
     if (Id.Length < 1) 
     { 
      yield return new ValidationResult("error"); 
     } 
    } 
} 

Mais j'ai pas le retour si l'erreur Id est vide