1

私のアプリケーションは ASP.NET MVC4 で作成されています。ビューモデル クラスで MVC データ注釈の検証を使用しています。

小数型の列が1つあります。以下の正規表現を使用して検証しています。

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

そして、上記の正規表現の助けを借りて、うまく機能しています。しかし、そこにもう1つの条件を追加したいと思います.これは、誰かが次のような番号を入力した場合です:

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 に答える