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/
参考文献
MaskedEditExtender
http://www.atmarkit.co.jp/fdotnet/dotnettips/775aspajaxmaskededit1/aspajaxmaskededit1.htmlMaskedEditValidator
http://www.atmarkit.co.jp/fdotnet/dotnettips/777aspajaxmaskededit2/aspajaxmaskededit2.htmlサンプル
http://thinkit.co.jp/cert/article/0702/14/5/3.htm* 上記は、まんま使えそうなので、それをWebユーザコントロールとして使用した例を以下のURLで記す。http://blogs.yahoo.co.jp/dk521123/folder/982076.html