最小限、完全、かつ検証可能な例 (フレームワーク 3.5):
<%@ 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.
比較が成功する理由:ドキュメントには、「値を指定されたデータ型に変換できない場合、検証は失敗する」と記載されているためです。、しかしConvert.ToDouble("1,234.0", CultureInfo.GetCultureInfo("en-US"))
成功します。
私の質問:
これはバグですか(Microsoft Connect に報告する必要があります) 、それとも、CompareValidator が .NET フレームワークの残りの部分とは異なる変換規則を使用すると書かれているドキュメントの一部を見逃したのでしょうか?