3

TextBox開始日と終了日の入力には2つのコントロールがあります。終了日が開始日より長くなく、開始日と終了日の差が12か月以内であることを検証する必要があります。

4

4 に答える 4

8

これを行うには、 a を使用するCustomValidator必要があります。あなたのmarkyouには、次のようなものがあります:

<asp:TextBox ID="txbStartDate" runat="server" />
<asp:TextBox ID="txbEndDate" runat="server" />
<asp:CustomValidator OnServerValidate="ValidateDuration"
    ErrorMessage="Dates are too far apart" runat="server" />

コード ビハインドでは、検証ハンドラーを定義します。

protected void ValidateDuration(object sender, ServerValidateEventArgs e)
{
    DateTime start = DateTime.Parse(txbStartDate.Text);
    DateTime end = DateTime.Parse(txbEndDate.Text);

    int months = (end.Month - start.Month) + 12 * (end.Year - start.Year);

    e.IsValid = months < 12.0;
}

上記のコードは例外をスローする傾向があることに注意してください。入力された日付を解析できることを確認するためにバリデーターを追加する必要がありValidateDurationます。独自のテストを行う前に、これらの他のバリデーターが合格したことを確認するようにメソッドを変更する必要があります。

さらに、別のバリデーターを追加して、終了日が実際に開始日より後 (または等しい) であることをテストすることもできます。この規則に違反すると、おそらく独自の検証エラー メッセージが表示されるはずです。

<asp:CompareValidator Operator="GreaterThanEqual" Type="Date"
    ControlToValidate="txbEndDate" ControlToCompare="txbStartDate"
    ErrorMessage="Let's get started first!" runat="server" />
于 2010-02-22T09:32:20.033 に答える
1

また、タイムスパンを使用することもできます:

        DateTime start = DateTime.Parse(DateBegin.Text);
        DateTime end = DateTime.Parse(DateEnd.Text);
        TimeSpan ts = end - start;
        e.IsValid = ts.Days < 365;
于 2013-03-07T04:59:17.597 に答える
0

迅速かつ簡単: 2 つのバリデータ、1 つは比較バリデータ (両方のコントロールを比較する)、および終了日をチェックするためのサーバー側メソッドを備えたカスタム バリデータです。

于 2010-02-22T09:28:20.137 に答える
0

そして、なぜあなたはそれについてではないのですか

 DateTime start = DateTime.Parse(DateBegin.Text);
 DateTime end = DateTime.Parse(DateEnd.Text);
 e.IsValid = (end-start).Years <1;
于 2016-10-13T20:30:41.993 に答える