1

我的应用程序是在 ASP.NET MVC4 上制作的。我在我的视图模型类中使用 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 数据类型 decimal 提交了另一个验证消息..

在此处输入图像描述

谁能建议我如何管理它?

4

1 回答 1

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
    } 
}

因此,您不必对客户端或服务器端验证进行任何黑客攻击

于 2013-07-30T11:26:36.147 回答