正在验证当前月份内的日期
Validating dates within the current month
我正在处理发票的日期字段。为发票日期选择的日期不能是当前月份之外的任何日期。
这是我的代码:
at Page_Load:
Dim firstOfTheMonthDate As DateTime = FirstDayOfMonthFromDateTime(DateTime.Now)
Me.compareValidatorDate.ValueToCompare = firstOfTheMonthDate.ToString("d")
我的专用功能
Private Function FirstDayOfMonthFromDateTime(dateTime As DateTime) As DateTime
Return New DateTime(dateTime.Year, dateTime.Month, 1)
End Function
客户端:
<asp:Label ID="lblInvDate" runat="server" AssociatedControlID="txtInvDate">Invoice Date:</asp:Label>
<asp:TextBox runat="server" ID="txtInvDate" MaxLength="20" CssClass="L5 DateCal" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="txtInvDate"
Text="The date field is required!" runat="server" />
<asp:CompareValidator ID="compareValidatorDate" ControlToValidate="txtInvDate"
Type="Date" Operator="LessThan" ErrorMessage="Date must be from this month!"
Display="Dynamic" runat="server" />
我遇到的问题是没有进行验证,或者至少,如果输入了除空白或null之外的任何日期,则会保存发票日期。如何改进我的代码?
感谢Karl Anderson对代码的帮助。
我很抱歉之前没有注意到这一点,但我之前给了您不正确的逻辑。
更好的解决方案是使用RangeValidator
,如下所示:
代码隐藏(Page_Load
):
Dim firstOfTheMonthDate As DateTime = FirstDayOfMonthFromDateTime(DateTime.Now)
Dim endOfTheMonthDate As DateTime = LastDayOfMonthFromDateTime(DateTime.Now)
Me.rangeValidatorDate.MinimumValue = firstOfTheMonthDate.ToString("d")
Me.rangeValidatorDate.MaximumValue = endOfTheMonthDate.ToString("d")
代码隐藏(实用程序功能):
Private Function FirstDayOfMonthFromDateTime(dateTime As DateTime) As DateTime
Return New DateTime(dateTime.Year, dateTime.Month, 1)
End Function
Public Function LastDayOfMonthFromDateTime(dateTime As DateTime) As DateTime
Dim firstDayOfTheMonth As New DateTime(dateTime.Year, dateTime.Month, 1)
Return firstDayOfTheMonth.AddMonths(1).AddDays(-1)
End Function
客户端:
<asp:Label ID="lblInvDate" runat="server" AssociatedControlID="txtInvDate">Invoice Date:</asp:Label>
<asp:TextBox runat="server" ID="txtInvDate" MaxLength="20" CssClass="L5 DateCal" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="txtInvDate"
Text="The date field is required!" runat="server" />
<asp:RangeValidator id="rangeValidatorDate" runat="server"
ControlToValidate="txtInvDate" Type="Date" Display="Dynamic" />
相关文章:
- 两位数的月份日期验证
- MVC3使用globalize库脚本进行日期验证
- AngularJs日期验证;我不适用于IE和Mozilla
- 日期验证参数
- Javascript - 需要日期验证 IF 语句
- angularjs提交表单中的开始日期结束日期验证应被禁用
- JavaScript日期验证RegEx或JS
- HTML5日期验证
- 使用弹出窗口进行动态日期验证
- 基于客户端日期格式的Javascript日期验证
- 使用MaskedEditExtender进行日期验证
- 如何在日期选择器中给出出生日期验证
- 日期验证失败,因为我猜是日期格式
- 文本框日期验证 mm/dd/yyyy classic asp , JavaScript.
- 从当前日期到 3 年之前的 Javascript 日期验证
- asp 文本框控件上的必填字段验证和当前日期验证
- 在 javascript 中对月份进行日期验证
- 使用 JavaScript 进行日期验证
- 日期验证日期选取器
- J查询无效日期的日期验证