Вместо использования Type="Double"
, попробуйте использовать Type="Currency"
.Он должен принимать значения с запятыми и без запятых, однако он не будет принимать более 2 десятичных знаков.
Вот пример:
<asp:TextBox runat="server" ID="TextBox1" />
<asp:CompareValidator runat="server" ID="cValidator" ControlToValidate="TextBox1"
Type="Currency" Operator="DataTypeCheck" EnableClientScript="true"
ErrorMessage="Invalid format!" Display="Dynamic" />
В противном случае будет работать RegularExpressionValidator
в сочетании сRequiredFieldValidator
для проверки пустых записей (валидатор регулярных выражений не предотвращает пустые записи).Вы можете использовать CustomValidator
, но вам потребуется придумать процедуру проверки на стороне клиента в JavaScript, если вы не хотите полагаться исключительно на проверку на стороне сервера с обратной передачей.Кроме того, решение на стороне клиента может включать регулярное выражение, и в целом требуется дополнительная проверка, хотя и не слишком сложная.
В этом примере используется RegularExpressionValidator
:
<asp:TextBox runat="server" ID="TextBox1" />
<asp:RequiredFieldValidator runat="server" ID="rfValidator" Display="Dynamic"
ControlToValidate="TextBox1" ErrorMessage="Required!" />
<asp:RegularExpressionValidator ID="reValidator" runat="server"
ControlToValidate="TextBox1"
EnableClientScript="True"
ErrorMessage="Invalid Format!"
Display="Dynamic"
ValidationExpression="(\d{1,3}(,\d{3})*\.\d{2})|(\d+(\.\d{2})?)" />