2012-03-16 137 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} |(()_ _-_)$“;