2013-07-30 2 views
1

Мое приложение создано на ASP.NET MVC4.И я использую проверку данных MVC в моих классах viewmodel.MVC dataannotations decimal datatype validation

У меня есть один столбец десятичного типа. И я использую под регулярным выражением, чтобы проверить его.

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

И с помощью вышеуказанного регулярного выражения хорошо работает. Но я хочу добавить еще одно условие there.Which если кто-то входит в число, например:

12. 
445. 

Затем он должен принять его, а также должны добавляет .00 средства (12.00,445.00) автоматически.

FYI, я изменил выше регулярное выражение, как это:

[RegularExpression(@"^\$?([0-9]{1,3},([0-9]{3},)*[0-9]{3}|[0-9]+)(.[0-9][0-9]|.)?$",ErrorMessage = "Amount is invalid.")] 

И это его принятия номера, как:

12. 
445. 

Но из-за MVC тип данных десятичного подал ее давая другим проверка сообщение ..

enter image description here

Может ли кто-нибудь предложить мне, как я могу это сделать?

ответ

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

Таким образом, вы не должны делать никаких хаков с клиент либо на стороне сервера valiedations

Смежные вопросы