我遇到了asp.net MaskedEditExtender和MaskedEditValidator的問題。我用手機蒙版和蒙版驗證器創建了一個自定義控件。有兩個問題,我可以使用一些幫助來解決。Masked Edit Validator Phone
問題1 - 我有一個驗證電話號碼的ValidationExpression,但是如果我設置EnableClientScript = false,它將不會在屏幕上顯示消息。它會正確驗證它,而不是讓它們通過,但不顯示消息。如果它是真的,它會顯示,但我只想做服務器端驗證。
問題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;
我想出問題2.我改變了正則表達式o包含掩碼。 _maskedEditValidator.ValidationExpression = @「^ [01]?[ - 。]?(\([2-9] \ d {2} \)| [2-9] \ d {2})[ - 。]? \ d {3} [ - 。]?\ d {4} |(\(___ \)___ \ -____)$「; – user1041169 2012-03-16 17:15:06