Asp.net mvc 基于十进制值的MVC服务器端验证

Asp.net mvc 基于十进制值的MVC服务器端验证,asp.net-mvc,validation,decimal,server-side,Asp.net Mvc,Validation,Decimal,Server Side,我在MVC中验证模型服务器端时遇到问题。我的模型有许多字段,每一个字段都可以很好地验证。我唯一的问题是两个十进制字段: [Required] [DataType(DataType.Currency] [DisplayFormat(ConvertEmptyStringToNull = true)] public decimal A { get; set; } [DataType(DataType.Currency)] [DisplayFormat(ConvertEmptyStringToNull

我在MVC中验证模型服务器端时遇到问题。我的模型有许多字段,每一个字段都可以很好地验证。我唯一的问题是两个十进制字段:

[Required]
[DataType(DataType.Currency]
[DisplayFormat(ConvertEmptyStringToNull = true)]
public decimal A { get; set; }

[DataType(DataType.Currency)]
[DisplayFormat(ConvertEmptyStringToNull = true)]
public Nullable<decimal> B { get; set; }
[必需]
[数据类型(数据类型.货币]
[显示格式(ConvertEmptyStringToFull=true)]
公共十进制A{get;set;}
[数据类型(数据类型.货币)]
[显示格式(ConvertEmptyStringToFull=true)]
公共可空B{get;set;}
如果A的值为null,或A或B的字符串为null,则我将获得一个NullReferenceException,其中包含一个stacktrace,我甚至无法分析。我尝试在控制器中捕获该异常,但该异常在到达之前出现。 如果我只在a中输入一个数字值,而在B中输入一个空值或一个数字(就像这两个值都是有效的一样),那么其他一切都会按照预期进行-如果存在验证问题,则会显示它们,如果没有,则会将记录保存在数据库中。 我试着到处找,但也许我忽略了什么……而且我有点生疏了,验证从来都不是我的强项。
感谢您的帮助!

从中删除
[DisplayFormat(ConvertEmptyStringToNull=true)]
(它不是可为空的类型,因此这没有意义,也无法完成-只需让
Required
属性处理验证,我尝试不使用DisplayFormat,只使用Required,但仍会引发异常