Регулярное выражение, как должно работать:
\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; }
Edit: В ответ на ваши два вопроса:
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 - Scott Gu's blog.
2) Можете ли вы показать мне регулярное выражение, где максимальная запись не может превышать 100,00 и мин записи не могут быть ниже 1,00
Вы могли бы сделать это в регулярном выражении как-то, но регулярное выражение не предназначены ни для чего больше, чем сопоставление шаблонов. Лучший способ сделать это - добавить атрибут проверки диапазона, в дополнение к вашему атрибуту regex. Итак, теперь ваша собственность будет выглядеть так:
[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; }
Приведенный выше код не проверен, но общий подход должен работать.
Спасибо и большое объяснение кстати. Я обязательно попробую это. – VoodooChild 2010-12-05 01:32:00