这是我的验证码类型

    [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+$

10-06 05:56