質問

自分で作成していないフォームを変更しようとして問題が発生しました。

フォームには日付値のasp:inputフィールドがあり、requiredFieldValとrangeValによってチェックされます。 rangeValのタイプは「日付」に設定されています。および最小値2000-01-01:最大値3000-01-01

今、ユーザーが「20000101」の形式で日付を入力できるように追加しようとしています。つまり、"-"なし。

整数型とmin、max値を持つ別のrangeValを追加して、両方を同じValidationGroupに入れようとしましたが、うまくいきませんでした。

日付入力フィールドでユーザーが両方(どちらか一方)の形式を使用できるようにするにはどうすればよいですか。

事前に感謝します!

役に立ちましたか?

解決

範囲バリデータの代わりに正規表現バリデータを使用できます。私は正規表現に少しさびていますが、ここで何かを見つけることができると確信しています。

http://www.regular-expressions.info/

日付ページへのリンクは次のとおりです。

http://www.regular-expressions.info/dates.html

これを試して、うまくいくと思います。そうでない場合はお知らせください。修正に取り組みます:

((19|20)\d\d[- /.](0[1-9]|1[012])[-/.](0[1-9]|[12][0-9]|3[01])|((19|20)\d\d(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])))

別の投稿により、この正規表現は2月31日などの無効な日付を検証しません。この場合、正規表現バリデーターを継承する検証クラスを作成し、EvaluateIsValidメソッドをオーバーライドして確認します実際の日付です。これにより、クライアント側で行われるほとんどの検証が可能になり、バックアップはサーバーレベルになり、いずれにしてもセカンダリ検証を行う必要があります。

他のヒント

複数の検証コントロールを使用して単一のコントロールを検証する場合、すべての検証コントロールに合格する必要があります。

(Kevinが指摘するように)正規表現を使用できますが、必要な検証(値が有効な DateTime オブジェクトであり、指定された範囲内にあることを確認する)をきれいに行うことは困難です。

独自のを作成することをお勧めしますCustomValidator コントロールを使用し、それを使用して値を検証します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top