[c#]在 asp.net Web API 与依赖项属性的模型验证

发布时间: 2017/2/25 3:27:18
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我用模型验证的验证的 web api 请使用︰

ActionFilterAttribute

它是可能的有模型的属性是依赖属性 'A' 的 ' B' 的有效性规则。考虑一下这个例子更多的澄清

public class ValidationModel
{

    [Required]
    public int? Id { get; set; }

    public string Barcode { get; set; }

    public string BarcodeType { get; set; }
}

上述模型具有所需的 Id 属性和条形码,BarcodeType 属性是可选的是它可以设置 BarcodeType 属性必需的当且仅当有任何价值的条码属性 (如果它不是空值和空字符串)

解决方法 1:

有是一个内置的机制,将触发自动执行的已过帐 Viewmodel 的 MVC 中的自定义验证 IValidatableObject

例如︰

public class ValidationModel : IValidatableObject {
    // properties as defined above

     public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) {
         if (!string.IsNullOrWhiteSpace(Barcode) && string.IsNullOrWhiteSpace(BarcodeType)) {
             yield new ValidationResult("BarcodeType is required if Barcode is given", new[] { "BarcodeType" });
         }
     }
}

您可以检查是否通过测试,验证是否成功在控制器中ModelState.IsValid

官方微信
官方QQ群
31647020