【ASP.NET コントロール】ASP.NET AJAX Control Toolkit (MaskedEditExtender・MaskedEditValidator編)

MaskedEditExtender/MaskedEditValidatorコントロール

特徴

MaskedEditExtender

 * 文字列の「形式」「入力規則(マスク)」を規定できる

MaskedEditValidator

 * MaskedEditコントロールとの組み合わせで利用することを想定した検証コントロール
 * 検証コントロールの基底クラスであるBaseValidatorクラスを継承している
  + ValidationSummaryコントロールとも連動できる

主なプロパティ

MaskedEditExtender

 * Mask : (設定例 9999/99/99)
 * MaskType : (設定例 Date)
 * UserDateFormat : 日付の書式(設定例 YearMonthDay)

MaskedEditValidator




使用上の注意

全般

 * MaskedEditコントロールはブラウザのJavaScript機能をオフにされてしまえば無効になってしまう
 * MaskedEditコントロールは、入力可能な文字列の最小公倍数を定義するもので、厳密にアプリケーションとして妥当な値を定義するものではない
 * MaskedEditValidatorコントロールはMaskedEditコントロールとセットでなければ利用できない(★これで悩んだ★)

日付入力用の制限の設定する場合

 * MaskedEditコントロールは、日付なら最大8桁の数値と0~9文字の組み合わせを受け入れることを定義しているにすぎず、例えば9999/99/99という値も入力可能である
 * 以下のサイトにあるように、日付のチェックでバグがでている。(★注意★)
http://www.geocities.jp/k_developmentsite/controltoolkit/maskeditbug.htm
http://pc-tech.blog.so-net.ne.jp/2009-10-16
 * 以下のサイトによると「0061年など、極端に小さい年の値を入力すると、入力検証にひっかからずにスルーしてしまうケースがある」らしく、原因は「MaskedEditValidator・Century プロパティの値を年に加算してから検証を行っている」ためらしい。解決策としては「JavaScript コードをページロード時にいちど実行して関数オーバーライド」を行っているとのこと。(サーバ側でのチェックが必要だし、日付には「RangeValidator」を使ったほうがよさそうな気がする)
http://devadjust.exblog.jp/9693778/



サンプル

http://thinkit.co.jp/cert/article/0702/14/5/3.htm
 * 上記は、まんま使えそうなので、それをWebユーザコントロールとして使用した例を以下のURLで記す。
http://blogs.yahoo.co.jp/dk521123/folder/982076.html