Web Api 2:值类型的[必需]?

时间:2015-08-11 16:22:59

标签: c# asp.net asp.net-mvc-5 asp.net-web-api2 asp.net-4.5

在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>的唯一方法是什么?我们可以不创建一些自定义验证属性吗?

3 个答案:

答案 0 :(得分:4)

您可以使用范围属性。

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

答案 1 :(得分:3)

尝试使值类型为Nullable,例如public double? MyDouble { get; set; }

答案 2 :(得分:1)

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

 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属性

进行检查