Ошибка с проверкой для десятичного типа данных - PullRequest
2 голосов
/ 22 марта 2010

Это мой код для подтверждения типа денег

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

Если я введу слово (например, «asdf») для текстового поля, соответствующего этому свойству, я получу следующую ошибку:

Значение 'asdf' недопустимо для FirstlySum.

Сообщение об ошибке не отображается.

Как я могу это исправить?

1 Ответ

1 голос
/ 01 ноября 2010

В этом сообщении на форуме описаны два исправления вашего решения.

Первое - установить тип как объект, а затем запустить для него регулярное выражение.Второй - переопределить сообщение об ошибке, когда у вас есть доступ к 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+$

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...