asp.net の MaskedEditExtender と MaskedEditValidator に問題があります。電話マスクとマスクされたバリデーターを使用してカスタム コントロールを作成しました。私が抱えている問題が 2 つあります。それを解決するために助けを借りることができます。
問題 1 - 電話番号を検証する ValidationExpression がありますが、EnableClientScript = false を設定すると、画面にメッセージが表示されません。正しく検証され、通過は許可されませんが、メッセージは表示されません。true の場合は表示されますが、サーバー側の検証のみを行いたいです。
問題 2 - 自分のコントロールが必要ない場合があります。マスクが空でない場合にのみ検証式をトリガーする方法はありますか? 現在、必要な場合は EmptyValueMessage が表示され、テキストが入力されると検証がトリガーされます。ただし、IsValidEmpty が true の場合、空のときに検証式がトリガーされるため、空は許可されません。空でない場合にのみトリガーする方法はありますか、または空のマスクを許可するように式を更新する必要がありますか? 式を更新する必要がある場合、誰かが良い例を持っていますか? (申し訳ありませんが、正規表現は私の弱点です)
以下は私のコードです。
_maskedEditExtender.ID = "maskedExt" + this.ID;
_maskedEditExtender.ClientIDMode = System.Web.UI.ClientIDMode.Static;
_maskedEditExtender.TargetControlID = this.ID;
_maskedEditExtender.MaskType = MaskedEditType.None;
_maskedEditExtender.Mask = "(999) 999-9999";
_maskedEditExtender.InputDirection = MaskedEditInputDirection.LeftToRight;
_maskedEditExtender.ClearMaskOnLostFocus = false;
_maskedEditValidator.ID = "maskedVal" + this.ID;
_maskedEditValidator.ControlToValidate = this.ID;
_maskedEditValidator.ControlExtender = _maskedEditExtender.ID;
_maskedEditValidator.InitialValue = "(___) ___-____";
_maskedEditValidator.IsValidEmpty = !Required;
_maskedEditValidator.ValidationExpression = @"^[01]?[- .]?(\([2-9]\d{2}\)|[2-9]\d{2})[- .]?\d{3}[- .]?\d{4}$";
_maskedEditValidator.EmptyValueMessage = "Please enter a phone number.";
_maskedEditValidator.InvalidValueMessage = "Please enter a valid phone number.";
_maskedEditValidator.ValidationGroup = "FormsValidationGroup";
_maskedEditValidator.CssClass = "FormValidation";
_maskedEditValidator.EnableClientScript = false;