Должно работать регулярное выражение, подобное следующему:
\A\d+(\.\d{1,2})?\Z
Это соответствует вводу типа:
2.00
25.70
04.15
2.50
525.43
423.3
52
И, как предложил Майк, вы можете использовать это в атрибуте проверки данных:
[RegularExpression(@"\A\d+(\.\d{1,2})?\Z", ErrorMessage="Please enter a numeric value with up to two decimal places.")]
public Decimal SalePrice { get; set; }
Редактировать: В ответ на два ваших вопроса:
1) Это подтверждается правом на отправку, а не когда мы теряем фокус на этом поле.?
Если все, что вы добавили, является атрибутом, тогда да будет проверка при отправке.Технически проверка происходит, когда параметры формы привязаны к модели.Однако, чтобы фактически использовать это, вам нужно проверить параметр проверки в вашем контроллере:
public ActionResult MyController(MyModel model)
{
if (ModelState.IsValid)
{
// do stuff
}
else
{
// Return view with the now-invalid model
// if you've placed error messages on the view, they will be displayed
return View(model);
}
}
Чтобы проверка выполнялась на стороне клиента в дополнение к стороне сервера, вам необходимо использоватьJavaScript.Базовым примером этого с использованием проверки Microsoft AJAX является блог Скотта Гу .
2) Можете ли вы показать мне регулярное выражение, где максимальная запись не может превышать 100,00, а минимальная запись не может бытьниже 1.00
Вы могли бы сделать это как-то в регулярном выражении, но на самом деле регулярное выражение не предназначено для чего-то большего, чем сопоставление с образцом.Лучший способ сделать это - добавить атрибут проверки диапазона в дополнение к вашему атрибуту регулярного выражения.Теперь ваше свойство будет выглядеть так:
[RegularExpression(@"\A\d+(\.\d{1,2})?\Z", ErrorMessage="Please enter a numeric value with up to two decimal places.")]
[Range(1.00m, 100.00m)]
public Decimal SalePrice { get; set; }
Приведенный выше код не проверен, но общий подход должен работать.