0

日、月、年に対応する 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>&nbsp;

<asp:DropDownList ID="Monthes" runat="server" >
<asp:ListItem></asp:ListItem>
<asp:ListItem>January</asp:ListItem>
                          .......
<asp:ListItem>December</asp:ListItem>
</asp:DropDownList>
&nbsp;

<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
4

1 に答える 1

0

を使用しcustomvalidatorて日付を作成し、有効な日付であることを確認できます。ただし、ストレートなテキスト ボックスを使用し、jquery-ui などの UI ライブラリを使用してテキスト ボックスを日付ピッカーに変換することをお勧めします。DateTime.TryParse()次に、コードビハインドのテキストボックスから日付を引き出​​すために使用できます。

最大の利点は、単一の入力を処理するだけでよく、文字列の連結や書式設定が不要なことです。

于 2013-05-07T19:52:28.967 に答える