我有 3 个投递箱,分别对应日、月和年。在用户选择一个日期后,我连接 3 个字符串并将其传递给数据库。
我的问题是如何在将日期传递给数据库之前以交互方式验证日期。过滤掉不存在的无效日期,如 6 月 31 日或 2 月 30 日?
我想到了比较验证器。我要做的是创建 2 个隐藏文本框,用原始用户输入字符串填充一个,另一个用转换为日期的用户输入字符串填充(如果日期无效,系统应将其转换为我认为最接近的可能)。
比我使用 CompareValidator 比较那些文本框,如果它们不匹配,则会提示错误。但是不知何故它不起作用。有没有人知道为什么。或者也许有人知道不太复杂的技术来检查来自投递箱的日期?
将不胜感激任何意见或建议。
前端代码:
<asp:DropDownList ID="Dates" runat="server" >
<asp:ListItem></asp:ListItem>
<asp:ListItem>01</asp:ListItem>
<asp:ListItem>02</asp:ListItem>
<asp:ListItem>03</asp:ListItem>
.......
<asp:ListItem>29</asp:ListItem>
<asp:ListItem>30</asp:ListItem>
<asp:ListItem>31</asp:ListItem>
</asp:DropDownList>
<asp:DropDownList ID="Monthes" runat="server" >
<asp:ListItem></asp:ListItem>
<asp:ListItem>January</asp:ListItem>
.......
<asp:ListItem>December</asp:ListItem>
</asp:DropDownList>
<asp:DropDownList ID="years" runat="server">
<asp:ListItem></asp:ListItem>
</asp:DropDownList>
<asp:TextBox ID="UserInput" runat="server"></asp:TextBox>
<asp:TextBox ID="ConvertedInput" runat="server"></asp:TextBox>
<asp:CompareValidator ID="CompareValidator1" class="errorMess" runat="server"
ControlToCompare="UserInput" ControlToValidate="ConvertedInput"
ErrorMessage="Invalid Date"></asp:CompareValidator>
后端代码:
If Not Page.IsPostBack Then
For count As Integer = 0 To 60
years.Items.Add(CurYear - count)
Next
End If
ConvertedInput.Visible = False
UserInput.Visible = False
.....
Bday = years.Text & "-" & Monthes.Text & "-" & Dates.Text
Dim TempDate As Date = CDate(Bday)
Dim ConvDate As String = TempDate.ToString("yyyy-MM-dd")
UserInput.Text = Bday
ConvertedInput.Text = ConvDate