这是验证货币类型的代码
[Required(ErrorMessage = "مبلغ پیشنهادی را وارد کنید")]
[RegularExpression("^[+]?\\d*$", ErrorMessage = "*")]
public decimal FirstlySum { get; set; }
如果我为与此属性对应的文本框输入单词(例如“asdf”),则会出现以下错误:
值'asdf'对FirstlySum无效。
错误消息未显示。
我该如何解决这个问题?
答案 0 :(得分:1)
此forum post描述了对您的解决方案的两个修复。
第一种是将类型设置为对象,然后在其上运行正则表达式。第二种是在有权访问ModelState时覆盖错误消息。
我最好将FirstlySum
声明为对象类型,然后每当您需要使用此值时,您应该使用另一个名为FirstlySumTranslated
的属性,如下所示:
[Required(ErrorMessage = "مبلغ پیشنهادی را وارد کنید")]
[RegularExpression("^[+]?\\d*$", ErrorMessage = "*")]
public object FirstlySum { get; set; }
public decimal FirstlySumTranslated {
get { return decimal.Parse(FirstlySum); }
}
另请注意,您的正则表达式不会捕获带小数位的数字。例如,1.23将被视为无效值。
可行的正则表达式为^\+?(\d+\.)?\d+$