是否可以停止强制“必需”验证的ViewModel Decimal属性?

时间:2017-03-20 13:12:11

标签: c# asp.net-mvc asp.net-mvc-5

我有一个viewmodel,其属性定义如下:

public decimal decProperty { get; set; }

当我想允许空值时,我发现了这种强制执行的“必需”验证。对我来说,指定0.00明显不同于null,即用户声明值为0.00,而后者表示该值为n / a。

我发现的唯一方法是将属性重新定义为带有正则表达式验证的字符串:

[RegularExpression(@"\d+(\.\d{1,2})?", ErrorMessage = "Invalid decimal")]
public string strProperty { get; set; }

我的思考和解决方案是正确的吗?

提前致谢。

2 个答案:

答案 0 :(得分:3)

decimal属性不能null,请尝试decimal?

public decimal? decProperty { get; set; }

答案 1 :(得分:2)

您可以使用可为空的小数:

public decimal? decProperty { get; set; }

这样做,如果用户没有为decProperty提供任何值,则其值为null。否则,它将包含用户提供的值。

使用decimal无法做到这一点,因为null不是有效的十进制值。另一方面,可以为空的十进制可以具有值null或任何有效的十进制值。

如果您想了解有关可空类型的更多信息,请查看here