日付のエラーチェックをする方法です。
イメージはこんな感じ。
①存在する日付をチェックするにはCompareValidator を使います。
<asp:TextBox runat="server" ID="txtNyukoHi" TextMode="Date" Width="150px" CssClass="form-control" /> <asp:CompareValidator runat="server" ControlToValidate ="txtNyukoHi" Type="Date" ValueToCompare="2999/12/31" Operator="LessThan" CssClass="text-danger" Display="Dynamic" ErrorMessage="存在しない日付です" />
②これだけだと、MM/DD/
ということで、RegularExpressionValidatorを追加します。
<asp:TextBox runat="server" ID="txtNyukoHi" TextMode="Date" Width="150px" CssClass="form-control" /> <asp:RegularExpressionValidator runat="server" ControlToValidate="txtNyukoHi" ValidationExpression="(19|20|21)\d{2}/(0?[1-9]|1[0-2])/(0?[1-9]$|[1-2][0-9]$|3[0-1]$)" CssClass="text-danger" Display="Dynamic" ErrorMessage="[年/月/日]ではありません<br/>" /> <asp:CompareValidator runat="server" ControlToValidate ="txtNyukoHi" Type="Date" ValueToCompare="2999/12/31" Operator="LessThan"
CssClass="text-danger" Display="Dynamic" ErrorMessage="存在しない日付です" />
追記:ただしこれだと、[年/月/日]ではない場合、2つエラーが表示されるんですよね…
なので、RegularExpressionValidatorはゆるーくチェックをするだけでもいいかなと思っています。
正規表現をゆるくしました。ガチガチにしたい方は上記の正規表現がいいかなと思います。
<asp:TextBox runat="server" ID="txtNyukoHi" TextMode="Date" Width="150px" CssClass="form-control" /> <asp:RegularExpressionValidator runat="server" ControlToValidate="txtNyukoHi" ValidationExpression="\d{4}/\d{1,2}/\d{1,2}$" CssClass="text-danger" Display="Dynamic" ErrorMessage="[年/月/日]ではありません<br/>" /> <asp:CompareValidator runat="server" ControlToValidate ="txtNyukoHi" Type="Date" ValueToCompare="2999/12/31" Operator="LessThan" CssClass="text-danger" Display="Dynamic" ErrorMessage="存在しない日付です" />
もうちょっと正規表現緩くした方がいいかな…