生年月日を入力するために、カレンダーエクステンダーを備えたテキストボックスを使用しています。日付が今日またはそれ以前であることを検証しています。次のコードがあります。
<asp:TextBox ID="txtDateOfBirth" runat="server" </asp:TextBox><ajaxToolkit:CalendarExtender ID="txtDateOfBirth_CalendarExtender" runat="server" Enabled="True" TargetControlID="txtDateOfBirth" Format="MM/dd/yyyy" </ajaxToolkit:CalendarExtender>
<asp:CompareValidator ID="cvDateOfBirth" runat="server" ControlToValidate="txtDateOfBirth" ErrorMessage="Must be today or older" Display="Dynamic" Operator="LessThanEqual"></asp:CompareValidator>
私は自分のPage_Loadに次のものを持っています
cvDateOfBirth.ValueToCompare = DateTime.Today.ToString("MM/dd/yyyy");
CompareValidator では、Type を文字列に設定しています。日付に設定すると、エラーが発生します
「cvDateOfBirth」の ValueToCompare プロパティの値「04/21/2013」は、タイプ「Date」に変換できません。
日付を MM/dd/yyyy としてフォーマットしています。これは、最初に MM を使用するように日付をフォーマットしない場合 (デフォルトのままにしておく場合)、月が12 より大きい (SQL 2008 R2)。Type を String のままにすると、検証は正しく機能しますが、今年だけです。2012 年 12 月 31 日 (2012 年 12 月 31 日) のような日付を選択すると、検証に失敗します。誰かが私が間違っていることを指摘できますか。また、CompareValidator の Type を Date に設定する必要があるという投稿をいくつか読みましたが、上記のエラーが発生します。また、テキストボックスの文字列と比較すると、これが文字列ではなく日付に設定されるのはなぜですか。手伝ってくれてありがとう。