我的应用程序是在ASP.NET MVC4上完成的。我在我的viewmodel类中使用了MVC数据注释验证。
我有一个十进制类型的列。我使用正则表达式来验证它。
[RegularExpression(@"^\$?([0-9]{1,3},([0-9]{3},)*[0-9]{3}|[0-9]+)(.[0-9][0-9])?$",ErrorMessage = "Amount is invalid.")]
public decimal Amount { get; set; }
在上述正则表达式的帮助下,它运作良好。 但是我想在那里增加一个条件。如果有人输入的数字如下:
12.
445.
然后它应该接受它并且还应该自动添加.00表示(12.00,445.00)。
仅供参考,我已经改变了上面的正则表达式:
[RegularExpression(@"^\$?([0-9]{1,3},([0-9]{3},)*[0-9]{3}|[0-9]+)(.[0-9][0-9]|.)?$",ErrorMessage = "Amount is invalid.")]
通过这个接受数字,如:
12.
445.
但是由于MVC数据类型十进制,它给出了另一个验证消息..
有谁能建议我如何管理它?
答案 0 :(得分:1)
我使用影子字段提供:
class myModel
{
...
public decimal Amount { get; private set; }
[RegularExpression(@"^\$?([0-9]{1,3},([0-9]{3},)*[0-9]{3}|[0-9]+)(.[0-9][0-9])?$",ErrorMessage = "Amount is invalid.")]
public string AmountStringed //use this field on your form input
{
get { return Amount.ToString(); }
set { Amount = decimal.parse(value); } //assign Amount
}
}
所以你不必做任何客户端或服务器端的攻击