日、月、年に対応する 3 つのドロップ ボックスがあります。ユーザーが日付を選択したら、3 つの文字列を連結してデータベースに渡します。
私の問題は、データベースに渡す前に日付を対話的に検証する方法です。存在しない 6 月 31 日や 2 月 30 日などの無効な日を除外するには?
私はComparevalidatorについて考えました。私がやることは、2つの隠しテキストボックスを作成し、1つに元のユーザー入力文字列を入力し、もう1つにユーザー入力文字列を日付に変換したものを入力することです(日付が有効でない場合、システムはそれを可能な限り近いものに変換する必要があります)。
それらが一致しない場合、CompareValidator を使用してこれらの textBoxes を比較すると、エラーが表示されます。しかし、どういうわけかそれは動作しません。誰かが理由を知っていますか。または、誰かがドロップボックスからの日付を確認するためのあまり複雑でないテクニックを知っているのでしょうか?
アドバイスや提案に感謝します。
フロントエンドコード:
<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