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