这是我的验证码类型
[Required(ErrorMessage = "مبلغ پیشنهادی را وارد کنید")]
[RegularExpression("^[+]?\\d*$", ErrorMessage = "*")]
public decimal FirstlySum { get; set; }
如果我为此属性对应的文本框输入单词(例如“ asdf”),则会出现以下错误:
值“ asdf”对于FirstlySum无效。
错误消息不显示。
我怎样才能解决这个问题?
最佳答案
此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+$