我正在使用带日历扩展器的文本框来输入出生日期。我正在验证日期为今天或更早。我有以下代码:使用CompareValidator验证日期
<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下面我有类型设置为字符串。如果我将其设置为日期,则出现错误
'cvDateOfBirth'的ValueToCompare属性值'04/21/2013'无法转换为类型'Date'。
我格式化日期MM/DD/YYYY,因为如果我不格式化先有MM的日期(并使其保持默认值),它在插入时的日期和月份逆转或出范围异常如果月份大于12(SQL 2008 R2)。如果我将字符串作为字符串,则验证将正确运行,但仅适用于今年。如果我选择2012年12月31日(2012年12月31日)的日期,则验证失败。任何人都可以指出我做错了什么。此外,我阅读了一些帖子,他们说Type必须设置为Date for CompareValidator,但是我收到了上面提到的错误。此外,为什么将它设置为日期而不是字符串,当我将它与文本框中的字符串进行比较时。感谢帮助。
传递日期格式为DD/MM/YYYY,并且查看它是否工作或不需要 – 2013-04-22 03:20:51
您需要通过Type =“Date” – 2013-04-22 03:26:17
如果我将日期作为DD/MM/YYYY比日期中的DB和月份是相反的 – Teebow 2013-04-22 03:29:19