2010-03-22 41 views
2

这是我的验证的钱类型代码错误与验证十进制数据类型

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

如果我输入一个单词(如“ASDF”),对应于该属性的文本框,我得到以下错误:

The value 'asdf' is not valid for FirstlySum.

该错误信息不会显示。

我该如何解决这个问题?

+0

可能重复的[MVC 4 - DataAnnotations - 验证为类型](http://stackoverflow.com/questions/12164728/mvc-4-dataannotations-validation-换型) – Liam 2015-04-21 14:58:41

回答

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