尽管StringLength属性,但不会导致验证失败的空属性

时间:2015-12-23 15:52:04

标签: c# web-services validation datacontractserializer

我有一个名为MyMethodQuery的类,它包含我的Web方法的条目属性

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

我的网络方法:

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

如果我离开空房产,我想抛出异常。但是,尽管属性为StringLength,它仍无法发挥作用。

我用SoapUI测试我的方法。

2 个答案:

答案 0 :(得分:0)

这些属性不应该在这种情况下起作用#34;开箱即用"。 Validator类是验证世界的入口点,您必须手动调用它。

有关示例,请参阅this answer

答案 1 :(得分: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");
         }
    }
}

但如果Id为空,我没有错误返回