2012-03-16 60 views
0

我遇到了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; 
+0

我想出問題2.我改變了正則表達式o包含掩碼。 _maskedEditValidator.ValidationExpression = @「^ [01]?[ - 。]?(\([2-9] \ d {2} \)| [2-9] \ d {2})[ - 。]? \ d {3} [ - 。]?\ d {4} |(\(___ \)___ \ -____)$「; – user1041169 2012-03-16 17:15:06

回答

0

第1期...我從來沒有就如何解決這一響應,用戶更喜歡它張貼每次回來,所以我只是設置enableclientscript =假。

問題2 ... maskedEditValidator.ValidationExpression = @「^ [01]?[ - 。]?(([2-9] \ d {2})| [2-9] \ d {2}) [ - 。]?\ d {3} [ - 。]?\ d {4} |(()_ _-_)$「;