我在使用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;发布于 2012-08-25 05:41:51
第一个问题...我从来没有得到关于如何纠正这个问题的回应,用户希望每次都发回,所以我只设置了enableclientscript = false。
第二个问题...maskedEditValidator.ValidationExpression = @"^01- .?((2-9\d{2})|2-9\d{2})- .?\d{3}- .?\d{4}|((_) __-_)$“;
https://stackoverflow.com/questions/9741263
复制相似问题