2012-03-16 3 views
0

asp.net MaskedEditExtender 및 MaskedEditValidator에 문제가 있습니다. 전화 마스크와 마스크 된 유효성 검사기를 사용하여 사용자 지정 컨트롤을 만들었습니다. 내가 도움을 줄 수있는 두 가지 문제가 있습니다.마스크 된 편집 유효성 검사기 전화

문제 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를 알아 냈습니다. 마스크를 포함하여 정규 표현식을 변경했습니다. _maskedEditValidator.ValidationExpression = @ "^ [01]? [-.] (\ ([2-9] \ d {2} \) | [2-9] \ d {2}) [-. \ d {3} [-.]? \ d {4} | (\ (___ \) ___ \ -____) $ "; – user1041169

답변

0

1 호 ... 나는이 문제를 해결하는 방법에 대한 응답을 가진 적이 없어하고, 사용자는 그래서 난 그냥 거짓 = enableclientscript 설정 매번 다시 게시 바람직하다.

문제 2 ... maskedEditValidator.ValidationExpression = @ "^ [01]? [-.]? (([2-9] \ d {2}) | [2-9] \ d {2}) [-.]? \ d {3} [-.]? \ d {4} | (() _ _-_) $ ";