【发布时间】:2013-04-22 02:59:37
【问题描述】:
我正在使用带有日历扩展器的文本框来输入出生日期。我正在验证日期是今天或更早。我有以下代码:
<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 中,我将类型设置为字符串。如果我将其设置为 Date 我会收到错误
“cvDateOfBirth”的 ValueToCompare 属性的值“04/21/2013”无法转换为“Date”类型。
我将日期格式化为 MM/dd/yyyy,因为如果我不将日期格式化为首先使用 MM(并将其保留为默认值),则会插入日期和月份反转或超出范围异常如果月份大于 12 (SQL 2008 R2)。如果我将类型保留为字符串,则验证工作正常,但仅适用于今年。如果我选择像 2012 年 12 月 31 日(2012 年 12 月 31 日)这样的日期,则验证失败。谁能指出我做错了什么。另外,我阅读了一些帖子,他们说必须将 CompareValidator 的类型设置为日期,但是我收到了上面提到的错误。另外,当我将其与文本框中的字符串进行比较时,为什么将其设置为 Date 而不是 String。感谢您的帮助。
【问题讨论】:
-
以 DD/MM/YYYY 格式传递日期....看看它是否有效
-
你需要传递Type="Date"
-
需要传递比较类型。请参考this link
-
如果我将日期传递为 DD/MM/YYYY 而不是在 DB 中,则日期和月份会颠倒
-
什么版本的.net?您的代码在 .Net 4 上适用于我。
标签: asp.net