Web Api 2: [Required]用于值类型

本文关键字:用于 类型 Required Api Web | 更新日期: 2023-09-27 18:07:31

在Web Api输入模型中使用[Required]数据注释似乎只检查被实例化为null的引用类型:

public class MyInputModel
{
    [Required] // This works! ModelState fails.
    public CustomClass MyCustomProperty { get; set; }
}

我们如何让它工作与值类型没有默认实例化?

public class MyInputModel
{
    [Required] // This is ignored because MyDouble is defaulted to 0
    public double MyDouble { get; set; }
}

是使用Nullable<Double>的唯一途径吗?我们不能创建一些自定义验证属性吗?

Web Api 2: [Required]用于值类型

你可以使用range属性

[Range(0, 99)]
public double MyDouble { get; set; }

尝试将值类型设置为空,例如public double? MyDouble { get; set; }

这是必需属性在内部的工作方式。

 override bool IsValid(object value) {
        if (value == null) {
            return false;
        }
        // only check string length if empty strings are not allowed
        var stringValue = value as string;
        if (stringValue != null && !AllowEmptyStrings) {
            return stringValue.Trim().Length != 0;
        }
        return true;
    }

与0值无关所以必须使用Range属性

进行检查