2016-04-28 4 views
0

Minimal, полный и Проверяемость пример (Framework 3.5):CompareValidator не позволяет разделителям тысяч - это ошибка или по дизайну?

<%@ Page Language="C#" Culture="en-US" %> 

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<body> 
    <form id="form1" runat="server"> 
     <asp:TextBox ID="txt" runat="server" /> 
     <asp:CompareValidator runat="server" ControlToValidate="txt" Operator="DataTypeCheck" Type="Double" Text="This is not a double." /> 
     <asp:Button runat="server" Text="Do Postback" /> 
    </form> 
</body> 
</html> 

Введите 1,234.0 в текстовом поле и нажмите клавишу TAB.

Ожидаемый результат: Ничего.
Фактический результат: This is not a double.

Почему я ожидаю, что сравнение, чтобы добиться успеха: Потому что the documentation says: «Проверка не выполняется, если значение не может быть преобразовано в указанный тип данных.», но Convert.ToDouble("1,234.0", CultureInfo.GetCultureInfo("en-US"))succeeds.

Мой вопрос:

Является ли это ошибка (который я должен сообщить Microsoft Connect) или я пропустил какую-то часть документации, где он говорит, что CompareValidator использует различные правила преобразования, чем остальная часть .NET Framework?

ответ

0

Вместо того, чтобы использовать Type = "Double", попробуйте использовать Type = "Currency". Он должен принимать значения с запятыми и без них, однако он не принимает более двух знаков после запятой.

+0

Спасибо. Это очень полезный комментарий, но, к сожалению, он не отвечает на вопрос (вопрос написан жирным шрифтом в нижней части моего текста). – Heinzi

 Смежные вопросы

  • Нет связанных вопросов^_^