验证十进制数据类型时出错

时间:2010-03-22 13:01:05

标签: c# asp.net-mvc validation types

这是验证货币类型的代码

    [Required(ErrorMessage = "مبلغ پیشنهادی را وارد کنید")]
    [RegularExpression("^[+]?\\d*$", ErrorMessage = "*")]
    public decimal FirstlySum { get; set; }

如果我为与此属性对应的文本框输入单词(例如“asdf”),则会出现以下错误:

  

值'asdf'对FirstlySum无效。

错误消息未显示。

我该如何解决这个问题?

1 个答案:

答案 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+$