Вы можете использовать атрибут RegularExpression с регулярным выражением, которое соответствует вашим критериям. Здесь есть целая куча выражений, которые включают числа, я уверен, что одно будет соответствовать всем требованиям. Вот ссылка .
Это поможет вам начать работу, хотя, возможно, оно не будет таким исчерпывающим, как вы хотите (требуется хотя бы одна цифра, начинающаяся с десятичной точки):
[RegularExpression(@"\d+(\.\d{1,2})?", ErrorMessage = "Invalid price")]
Обратите внимание, что трудно выдать точное сообщение об ошибке, потому что вы не знаете, какая часть регулярного выражения не соответствовала (например, строка "z.22" имеет правильное количество десятичных знаков, но не действительная цена).