none
RangeValidatorによる日付チェック RRS feed

  • 質問

  • お世話になります。

     

    RangeValidatorによりテキストボックスの日付チェックをおこないたいと考えております。

    通常、RangeValidatorのTypeに「Date」を指定すれば可能のようですが、

    今回テキストボックスに入力される日付フォーマットが「yyyyMMdd」形式となっており

    RangeValidatorのMaximumValueに「99991231」といれても、

    Date型に変換できないためエラーが返ってきます。

     

    「9999/12/31」であればOKのようですが、

    「yyyyMMdd」形式の日付データをRangeValidatorで入力チェックすることはできないのでしょうか?

     

    いい方法があれば、ご教授のほどよろしくお願いいたします。

     

    2008年3月6日 1:21

回答

  • 2つほどありますが考えられます(確認してないですが:両方とも難しいですよ)

    ①RangeValidatorを継承してConvertをオーバーライドし自力で変換します。(あとCompareValidatorで良いのでは)

         ->グローバル化がある場合は注意が必要です


    ②RegularExpressionValidatorでチェック後、DateTime.Parseします。

         ->クライアント側ですべてチェックする場合はMS Ajax Librayが必要でJavaScirptで作成する必要があります。
        (DateTimeをパースする為)


    2008年3月6日 1:44

すべての返信

  • 2つほどありますが考えられます(確認してないですが:両方とも難しいですよ)

    ①RangeValidatorを継承してConvertをオーバーライドし自力で変換します。(あとCompareValidatorで良いのでは)

         ->グローバル化がある場合は注意が必要です


    ②RegularExpressionValidatorでチェック後、DateTime.Parseします。

         ->クライアント側ですべてチェックする場合はMS Ajax Librayが必要でJavaScirptで作成する必要があります。
        (DateTimeをパースする為)


    2008年3月6日 1:44
  • 返信が遅くなり、申し訳ありません。
    ご連絡ありがとうございます。

    なるほど、たしかに難しそうです。
    できるだけシンプルにやるには、書式を「yyyy/MM/dd」形式でやれるほうが
    よさそうですね。
    ご教授いただいた方法でいけるかどうか、確認してみます。

    ありがとうございました。

    2008年3月7日 0:13
  • CustomValidatorでチェックしてもいいんじゃないでしょうか? まず、入力された値が8桁の数字であるかどうかチェックし、かつ、そこからyyyy/mm/ddの形式に直して、それが日付に変換できるかどうかをチェックしても良いと思います。
    2008年3月7日 1:35
    モデレータ
  • ご連絡ありがとうございます。

    CustomValidatorを使用するというのは思いつきませんでした。
    ありがとうございました。さっそく試してみますっ!
    2008年3月7日 6:44