private bool validateMaskType() { string mask = Mask; MaskedEditType maskType = MaskType; if (!string.IsNullOrEmpty(mask) && (maskType == MaskedEditType.Date || maskType == MaskedEditType.Time)) { string validMask = MaskedEditCommon.GetValidMask(mask); switch (maskType) { case MaskedEditType.Date: return(Array.IndexOf(new string[] { "99/99/9999", "99/9999/99", "9999/99/99", "99/99/99" }, validMask) >= 0); case MaskedEditType.Time: return(Array.IndexOf(new string[] { "99:99:99", "99:99" }, validMask) >= 0); case MaskedEditType.DateTime: return(Array.IndexOf(new string[] { "99/99/9999 99:99:99", "99/99/9999 99:99", "99/9999/99 99:99:99", "99/9999/99 99:99", "9999/99/99 99:99:99", "9999/99/99 99:99", "99/99/99 99:99:99", "99/99/99 99:99" }, validMask) >= 0); case MaskedEditType.Number: foreach (char ch in validMask) { if (ch != '9' && ch != '.' && ch != ',') { return(false); } } break; } } return(true); }
protected override bool EvaluateIsValid() { MaskedEditExtender MaskExt = (MaskedEditExtender)FindControl(ControlExtender); TextBox Target = (TextBox)MaskExt.FindControl(ControlToValidate); base.ErrorMessage = ""; base.Text = ""; string cssError = ""; bool ok = true; if (!this.IsValidEmpty) { if (Target.Text.Trim() == this.InitialValue) { base.ErrorMessage = this.EmptyValueMessage; if (string.IsNullOrEmpty(this.EmptyValueBlurredText)) { base.Text = base.ErrorMessage; } else { base.Text = this.EmptyValueBlurredText; } cssError = MaskExt.OnInvalidCssClass; ok = false; } } if (ok && Target.Text.Length != 0 && this.ValidationExpression.Length != 0) { try { System.Text.RegularExpressions.Regex Regex = new System.Text.RegularExpressions.Regex(this.ValidationExpression); ok = Regex.IsMatch(Target.Text); } catch { ok = false; } } if (ok && Target.Text.Length != 0) { string Culture = MaskExt.CultureName; if (string.IsNullOrEmpty(Culture)) { Culture = System.Globalization.CultureInfo.CurrentCulture.Name; } string CultureAMPMP = ""; if (!string.IsNullOrEmpty(ControlCulture.DateTimeFormat.AMDesignator) && !string.IsNullOrEmpty(ControlCulture.DateTimeFormat.PMDesignator)) { CultureAMPMP = ControlCulture.DateTimeFormat.AMDesignator + ";" + ControlCulture.DateTimeFormat.PMDesignator; } switch (MaskExt.MaskType) { case MaskedEditType.Number: try { decimal numval = System.Decimal.Parse(Target.Text, ControlCulture); } catch { ok = false; } break; case MaskedEditType.DateTime: case MaskedEditType.Date: case MaskedEditType.Time: int tamtext = Target.Text.Length; // gmorgan (25/06/2007) - Added check for AcceptAMPM in MaskedEditExtender to fix bug // with validation in 24hr mode. if (MaskExt.AcceptAMPM && !string.IsNullOrEmpty(CultureAMPMP) && (MaskExt.MaskType == MaskedEditType.Time || MaskExt.MaskType == MaskedEditType.DateTime)) { char[] charSeparators = new char[] { ';' }; string[] ArrAMPM = CultureAMPMP.Split(charSeparators); if (ArrAMPM[0].Length != 0) { tamtext -= (ArrAMPM[0].Length + 1); } } if (MaskedEditCommon.GetValidMask(MaskExt.Mask).Length != tamtext) { ok = false; } if (ok) { try { DateTime dtval = System.DateTime.Parse(Target.Text, ControlCulture); } catch { ok = false; } } break; } if (!ok) { base.ErrorMessage = this.InvalidValueMessage; if (string.IsNullOrEmpty(this.InvalidValueBlurredMessage)) { base.Text = base.ErrorMessage; } else { base.Text = this.InvalidValueBlurredMessage; } cssError = MaskExt.OnInvalidCssClass; } if (ok && (!string.IsNullOrEmpty(this.MaximumValue) || !string.IsNullOrEmpty(this.MinimumValue))) { switch (MaskExt.MaskType) { case MaskedEditType.None: { System.Int32 lenvalue; if (!string.IsNullOrEmpty(this.MaximumValue)) { try { lenvalue = System.Int32.Parse(this.MaximumValue, ControlCulture); ok = (lenvalue >= Target.Text.Length); } catch { base.ErrorMessage = this.InvalidValueMessage; if (string.IsNullOrEmpty(this.InvalidValueBlurredMessage)) { base.Text = base.ErrorMessage; } else { base.Text = this.InvalidValueBlurredMessage; } ok = false; } if (!ok) { base.ErrorMessage = this.MaximumValueMessage; if (string.IsNullOrEmpty(this.MaximumValueBlurredMessage)) { base.Text = base.ErrorMessage; } else { base.Text = this.MaximumValueBlurredMessage; } cssError = MaskExt.OnInvalidCssClass; } } if (!string.IsNullOrEmpty(this.MinimumValue)) { try { lenvalue = System.Int32.Parse(this.MinimumValue, ControlCulture); ok = (lenvalue <= Target.Text.Length); } catch { base.ErrorMessage = this.InvalidValueMessage; if (string.IsNullOrEmpty(this.InvalidValueBlurredMessage)) { base.Text = base.ErrorMessage; } else { base.Text = this.InvalidValueBlurredMessage; } ok = false; } if (!ok) { base.ErrorMessage = this.MinimumValueMessage; if (string.IsNullOrEmpty(this.MinimumValueBlurredText)) { base.Text = base.ErrorMessage; } else { base.Text = this.MinimumValueBlurredText; } cssError = MaskExt.OnInvalidCssClass; } } break; } case MaskedEditType.Number: { decimal numval = System.Decimal.Parse(Target.Text, ControlCulture); decimal Compval; if (!string.IsNullOrEmpty(this.MaximumValue)) { try { Compval = System.Decimal.Parse(this.MaximumValue, ControlCulture); ok = (Compval >= numval); } catch { ok = false; } if (!ok) { base.ErrorMessage = this.MaximumValueMessage; if (string.IsNullOrEmpty(this.MaximumValueBlurredMessage)) { base.Text = base.ErrorMessage; } else { base.Text = this.MaximumValueBlurredMessage; } cssError = MaskExt.OnInvalidCssClass; } } if (!string.IsNullOrEmpty(this.MinimumValue)) { try { Compval = System.Decimal.Parse(this.MinimumValue, ControlCulture); ok = (Compval <= numval); } catch { ok = false; } if (!ok) { base.ErrorMessage = this.MinimumValueMessage; if (string.IsNullOrEmpty(this.MinimumValueBlurredText)) { base.Text = base.ErrorMessage; } else { base.Text = this.MinimumValueBlurredText; } cssError = MaskExt.OnInvalidCssClass; } } break; } case MaskedEditType.DateTime: case MaskedEditType.Date: case MaskedEditType.Time: { DateTime dtval = System.DateTime.Parse(Target.Text, ControlCulture); DateTime dtCompval; if (!string.IsNullOrEmpty(this.MaximumValue)) { try { dtCompval = System.DateTime.Parse(this.MaximumValue, ControlCulture); ok = (dtCompval >= dtval); } catch { ok = false; } if (!ok) { base.ErrorMessage = this.MaximumValueMessage; if (string.IsNullOrEmpty(this.MaximumValueBlurredMessage)) { base.Text = base.ErrorMessage; } else { base.Text = this.MaximumValueBlurredMessage; } cssError = MaskExt.OnInvalidCssClass; } } if (!string.IsNullOrEmpty(this.MinimumValue)) { try { dtCompval = System.DateTime.Parse(this.MinimumValue, ControlCulture); ok = (dtCompval <= dtval); } catch { ok = false; } if (!ok) { base.ErrorMessage = this.MinimumValueMessage; if (string.IsNullOrEmpty(this.MinimumValueBlurredText)) { base.Text = base.ErrorMessage; } else { base.Text = this.MinimumValueBlurredText; } cssError = MaskExt.OnInvalidCssClass; } } break; } } } } if (ok && MaskedEditServerValidator != null) { ServerValidateEventArgs serverValidateEventArgs = new ServerValidateEventArgs(Target.Text, ok); MaskedEditServerValidator(Target, serverValidateEventArgs); ok = serverValidateEventArgs.IsValid; if (!ok) { cssError = MaskExt.OnInvalidCssClass; base.ErrorMessage = this.InvalidValueMessage; if (string.IsNullOrEmpty(this.InvalidValueBlurredMessage)) { base.Text = base.ErrorMessage; } else { base.Text = this.InvalidValueBlurredMessage; } } } if (!ok) { // set CSS at server for browser with not implement client validator script (FF, others) //MaskedEditSetCssClass(value,CSS) string Script = "MaskedEditSetCssClass(" + this.ClientID + ",'" + cssError + "');"; ScriptManager.RegisterStartupScript(this, typeof(MaskedEditValidator), "MaskedEditServerValidator_" + this.ID, Script, true); } return(ok); }
protected override void OnPreRender(System.EventArgs e) { base.OnPreRender(e); if (this.EnableClientScript) { // register Script Resource at current page ScriptManager.RegisterClientScriptResource(this, typeof(MaskedEditValidator), "AjaxControlToolkit.MaskedEdit.MaskedEditValidator.js"); MaskedEditExtender MaskExt = (MaskedEditExtender)FindControl(ControlExtender); TextBox Target = (TextBox)MaskExt.FindControl(ControlToValidate); int FirstMaskPos = -1; int LastMaskPosition = -1; if (MaskExt.ClearMaskOnLostFocus) { FirstMaskPos = 0; LastMaskPosition = MaskedEditCommon.GetValidMask(MaskExt.Mask).Length + 1; } else { FirstMaskPos = MaskedEditCommon.GetFirstMaskPosition(MaskExt.Mask); LastMaskPosition = MaskedEditCommon.GetLastMaskPosition(MaskExt.Mask) + 1; } ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "IsMaskedEdit", true.ToString().ToLower(CultureInfo.InvariantCulture), true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "ValidEmpty", this.IsValidEmpty.ToString().ToLower(CultureInfo.InvariantCulture), true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "MaximumValue", this.MaximumValue, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "MinimumValue", this.MinimumValue, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "InitialValue", this.InitialValue, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "ValidationExpression", this.ValidationExpression, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "ClientValidationFunction", this.ClientValidationFunction, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "TargetValidator", Target.ClientID, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "EmptyValueMessage", this.EmptyValueMessage, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "EmptyValueText", this.EmptyValueBlurredText, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "MaximumValueMessage", this.MaximumValueMessage, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "MaximumValueText", this.MaximumValueBlurredMessage, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "MinimumValueMessage", this.MinimumValueMessage, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "MinimumValueText", this.MinimumValueBlurredText, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "InvalidValueMessage", this.InvalidValueMessage, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "InvalidValueText", this.InvalidValueBlurredMessage, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "InvalidValueCssClass", MaskExt.OnInvalidCssClass, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "CssBlurNegative", MaskExt.OnBlurCssNegative, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "CssFocus", MaskExt.OnFocusCssClass, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "CssFocusNegative", MaskExt.OnFocusCssNegative, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "TooltipMessage", this.TooltipMessage, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "FirstMaskPosition", FirstMaskPos.ToString(CultureInfo.InvariantCulture), true); if (!String.IsNullOrEmpty(MaskExt.CultureName)) { ControlCulture = System.Globalization.CultureInfo.GetCultureInfo(MaskExt.CultureName); } switch (MaskExt.MaskType) { case MaskedEditType.None: { ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "evaluationfunction", "MaskedEditValidatorNone", true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "LastMaskPosition", LastMaskPosition.ToString(CultureInfo.InvariantCulture), true); break; } case MaskedEditType.Number: { string AttibCu = ControlCulture.NumberFormat.CurrencySymbol; string AttibDc = ControlCulture.NumberFormat.CurrencyDecimalSeparator; string AttibTh = ControlCulture.NumberFormat.CurrencyGroupSeparator; if (MaskExt.DisplayMoney != MaskedEditShowSymbol.None) { LastMaskPosition += MaskExt.CultureCurrencySymbolPlaceholder.Length + 1; } if (MaskExt.AcceptNegative != MaskedEditShowSymbol.None) { if (MaskExt.DisplayMoney != MaskedEditShowSymbol.None) { LastMaskPosition++; } else { LastMaskPosition += 2; } } ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "Money", AttibCu, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "Decimal", AttibDc, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "Thousands", AttibTh, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "evaluationfunction", "MaskedEditValidatorNumber", true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "LastMaskPosition", LastMaskPosition.ToString(CultureInfo.InvariantCulture), true); break; } case MaskedEditType.DateTime: { //date string AttibSep = ControlCulture.DateTimeFormat.DateSeparator; char sep = System.Char.Parse(ControlCulture.DateTimeFormat.DateSeparator); string[] arrDate = ControlCulture.DateTimeFormat.ShortDatePattern.Split(sep); string AttibFmt = arrDate[0].Substring(0, 1).ToUpper(ControlCulture); AttibFmt += arrDate[1].Substring(0, 1).ToUpper(ControlCulture); AttibFmt += arrDate[2].Substring(0, 1).ToUpper(ControlCulture); AttibFmt = (MaskExt.UserDateFormat == MaskedEditUserDateFormat.None ? AttibFmt : MaskExt.UserDateFormat.ToString()); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "DateSeparator", AttibSep, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "DateFormat", AttibFmt, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "Century", MaskExt.Century.ToString(CultureInfo.InvariantCulture), true); //time AttibSep = ControlCulture.DateTimeFormat.TimeSeparator; string AttibSyb = ""; if (String.IsNullOrEmpty(ControlCulture.DateTimeFormat.AMDesignator + ControlCulture.DateTimeFormat.PMDesignator)) { AttibSyb = ""; } else { AttibSyb = ControlCulture.DateTimeFormat.AMDesignator + ";" + ControlCulture.DateTimeFormat.PMDesignator; } AttibSyb = (MaskExt.UserTimeFormat == MaskedEditUserTimeFormat.None ? AttibSyb : ""); if (MaskExt.AcceptAMPM) { if (!String.IsNullOrEmpty(AttibSyb)) { sep = System.Char.Parse(AttibSep); string[] arrSyb = AttibSyb.Split(sep); LastMaskPosition += arrSyb[0].Length + 1; } } ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "TimeSeparator", AttibSep, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "AmPmSymbol", AttibSyb, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "evaluationfunction", "MaskedEditValidatorDateTime", true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "LastMaskPosition", LastMaskPosition.ToString(CultureInfo.InvariantCulture), true); break; } case MaskedEditType.Date: { string AttibSep = ControlCulture.DateTimeFormat.DateSeparator; char sep = System.Char.Parse(ControlCulture.DateTimeFormat.DateSeparator); string[] arrDate = ControlCulture.DateTimeFormat.ShortDatePattern.Split(sep); string AttibFmt = arrDate[0].Substring(0, 1).ToUpper(ControlCulture); AttibFmt += arrDate[1].Substring(0, 1).ToUpper(ControlCulture); AttibFmt += arrDate[2].Substring(0, 1).ToUpper(ControlCulture); AttibFmt = (MaskExt.UserDateFormat == MaskedEditUserDateFormat.None ? AttibFmt : MaskExt.UserDateFormat.ToString()); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "DateSeparator", AttibSep, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "DateFormat", AttibFmt, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "Century", MaskExt.Century.ToString(CultureInfo.InvariantCulture), true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "evaluationfunction", "MaskedEditValidatorDate", true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "LastMaskPosition", LastMaskPosition.ToString(CultureInfo.InvariantCulture), true); break; } case MaskedEditType.Time: { string AttibSep = ControlCulture.DateTimeFormat.TimeSeparator; string AttibSyb = ""; if (String.IsNullOrEmpty(ControlCulture.DateTimeFormat.AMDesignator + ControlCulture.DateTimeFormat.PMDesignator)) { AttibSyb = ""; } else { AttibSyb = ControlCulture.DateTimeFormat.AMDesignator + ";" + ControlCulture.DateTimeFormat.PMDesignator; } AttibSyb = (MaskExt.UserTimeFormat == MaskedEditUserTimeFormat.None ? AttibSyb : ""); if (MaskExt.AcceptAMPM) { if (!String.IsNullOrEmpty(AttibSyb)) { char sep = System.Char.Parse(AttibSep); string[] arrSyb = AttibSyb.Split(sep); LastMaskPosition += arrSyb[0].Length + 1; } } ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "TimeSeparator", AttibSep, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "AmPmSymbol", AttibSyb, true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "evaluationfunction", "MaskedEditValidatorTime", true); ScriptManager.RegisterExpandoAttribute(this, this.ClientID, "LastMaskPosition", LastMaskPosition.ToString(CultureInfo.InvariantCulture), true); break; } } } }
protected override bool EvaluateIsValid() { var maskExt = (MaskedEditExtender)FindControl(ControlExtender); var target = (TextBox)maskExt.FindControl(ControlToValidate); base.ErrorMessage = String.Empty; base.Text = String.Empty; var cssError = String.Empty; var ok = true; if (!IsValidEmpty) { if (target.Text.Trim() == InitialValue) { base.ErrorMessage = EmptyValueMessage; if (String.IsNullOrEmpty(EmptyValueBlurredText)) { base.Text = base.ErrorMessage; } else { base.Text = EmptyValueBlurredText; } cssError = maskExt.OnInvalidCssClass; ok = false; } } if (ok && target.Text.Length != 0 && ValidationExpression.Length != 0) { try { var regex = new Regex(ValidationExpression); ok = regex.IsMatch(target.Text); } catch { ok = false; } } if (ok && target.Text.Length != 0) { var culture = maskExt.CultureName; if (String.IsNullOrEmpty(culture)) { culture = CultureInfo.CurrentCulture.Name; } ControlCulture = CultureInfo.GetCultureInfo(culture); var cultureAMPMP = String.Empty; if (!String.IsNullOrEmpty(ControlCulture.DateTimeFormat.AMDesignator) && !String.IsNullOrEmpty(ControlCulture.DateTimeFormat.PMDesignator)) { cultureAMPMP = ControlCulture.DateTimeFormat.AMDesignator + ";" + ControlCulture.DateTimeFormat.PMDesignator; } switch (maskExt.MaskType) { case MaskedEditType.Number: try { var numval = Decimal.Parse(target.Text, ControlCulture); } catch { ok = false; } break; case MaskedEditType.DateTime: case MaskedEditType.Date: case MaskedEditType.Time: var tamtext = target.Text.Length; // gmorgan (25/06/2007) - Added check for AcceptAMPM in MaskedEditExtender to fix bug // with validation in 24hr mode. if (maskExt.AcceptAMPM && !String.IsNullOrEmpty(cultureAMPMP) && (maskExt.MaskType == MaskedEditType.Time || maskExt.MaskType == MaskedEditType.DateTime)) { var charSeparators = new char[] { ';' }; var arrAMPM = cultureAMPMP.Split(charSeparators); if (arrAMPM[0].Length != 0) { tamtext -= (arrAMPM[0].Length + 1); } } var expectedLength = MaskedEditCommon.GetValidMask(maskExt.Mask).Length; if (maskExt.MaskType != MaskedEditType.Time) { var currentCultureDateSeparatorLength = (String.IsNullOrEmpty(maskExt.CultureName) ? CultureInfo.CurrentCulture : CultureInfo.GetCultureInfo(maskExt.CultureName)).DateTimeFormat.DateSeparator.Length; // there are always 2 separators, and each separator adds to the expected length by the amount over size 1 that it is. expectedLength += (currentCultureDateSeparatorLength - 1) * 2; } if (expectedLength != tamtext) { ok = false; } if (ok) { try { var dtval = DateTime.Parse(target.Text, ControlCulture); } catch { ok = false; } } break; } if (!ok) { base.ErrorMessage = InvalidValueMessage; if (String.IsNullOrEmpty(InvalidValueBlurredMessage)) { base.Text = base.ErrorMessage; } else { base.Text = InvalidValueBlurredMessage; } cssError = maskExt.OnInvalidCssClass; } if (ok && (!String.IsNullOrEmpty(MaximumValue) || !String.IsNullOrEmpty(MinimumValue))) { switch (maskExt.MaskType) { case MaskedEditType.None: { int lenvalue; if (!String.IsNullOrEmpty(MaximumValue)) { try { lenvalue = Int32.Parse(MaximumValue, ControlCulture); ok = (lenvalue >= target.Text.Length); } catch { base.ErrorMessage = InvalidValueMessage; if (String.IsNullOrEmpty(InvalidValueBlurredMessage)) { base.Text = base.ErrorMessage; } else { base.Text = InvalidValueBlurredMessage; } ok = false; } if (!ok) { base.ErrorMessage = MaximumValueMessage; if (String.IsNullOrEmpty(MaximumValueBlurredMessage)) { base.Text = base.ErrorMessage; } else { base.Text = MaximumValueBlurredMessage; } cssError = maskExt.OnInvalidCssClass; } } if (ok && !String.IsNullOrEmpty(MinimumValue)) { try { lenvalue = Int32.Parse(MinimumValue, ControlCulture); ok = (lenvalue <= target.Text.Length); } catch { base.ErrorMessage = InvalidValueMessage; if (String.IsNullOrEmpty(InvalidValueBlurredMessage)) { base.Text = base.ErrorMessage; } else { base.Text = InvalidValueBlurredMessage; } ok = false; } if (!ok) { base.ErrorMessage = MinimumValueMessage; if (String.IsNullOrEmpty(MinimumValueBlurredText)) { base.Text = base.ErrorMessage; } else { base.Text = MinimumValueBlurredText; } cssError = maskExt.OnInvalidCssClass; } } break; } case MaskedEditType.Number: { var numval = Decimal.Parse(target.Text, ControlCulture); decimal compval; if (!String.IsNullOrEmpty(MaximumValue)) { try { compval = Decimal.Parse(MaximumValue, ControlCulture); ok = (compval >= numval); } catch { ok = false; } if (!ok) { base.ErrorMessage = MaximumValueMessage; if (String.IsNullOrEmpty(MaximumValueBlurredMessage)) { base.Text = base.ErrorMessage; } else { base.Text = MaximumValueBlurredMessage; } cssError = maskExt.OnInvalidCssClass; } } if (ok && !String.IsNullOrEmpty(MinimumValue)) { try { compval = Decimal.Parse(MinimumValue, ControlCulture); ok = (compval <= numval); } catch { ok = false; } if (!ok) { base.ErrorMessage = MinimumValueMessage; if (String.IsNullOrEmpty(MinimumValueBlurredText)) { base.Text = base.ErrorMessage; } else { base.Text = MinimumValueBlurredText; } cssError = maskExt.OnInvalidCssClass; } } break; } case MaskedEditType.DateTime: case MaskedEditType.Date: case MaskedEditType.Time: { var dtval = DateTime.Parse(target.Text, ControlCulture); DateTime dtCompval; if (!String.IsNullOrEmpty(MaximumValue)) { try { dtCompval = DateTime.Parse(MaximumValue, ControlCulture); ok = (dtCompval >= dtval); } catch { ok = false; } if (!ok) { base.ErrorMessage = MaximumValueMessage; if (String.IsNullOrEmpty(MaximumValueBlurredMessage)) { base.Text = base.ErrorMessage; } else { base.Text = MaximumValueBlurredMessage; } cssError = maskExt.OnInvalidCssClass; } } if (ok && !String.IsNullOrEmpty(MinimumValue)) { try { dtCompval = DateTime.Parse(MinimumValue, ControlCulture); ok = (dtCompval <= dtval); } catch { ok = false; } if (!ok) { base.ErrorMessage = MinimumValueMessage; if (String.IsNullOrEmpty(MinimumValueBlurredText)) { base.Text = base.ErrorMessage; } else { base.Text = MinimumValueBlurredText; } cssError = maskExt.OnInvalidCssClass; } } break; } } } } if (ok && MaskedEditServerValidator != null) { var serverValidateEventArgs = new ServerValidateEventArgs(target.Text, ok); MaskedEditServerValidator(target, serverValidateEventArgs); ok = serverValidateEventArgs.IsValid; if (!ok) { cssError = maskExt.OnInvalidCssClass; base.ErrorMessage = InvalidValueMessage; if (String.IsNullOrEmpty(InvalidValueBlurredMessage)) { base.Text = base.ErrorMessage; } else { base.Text = InvalidValueBlurredMessage; } } } if (!ok) { // set CSS at server for browser with not implement client validator script (FF, others) //MaskedEditSetCssClass(value,CSS) var script = "MaskedEditSetCssClass(" + ClientID + ",'" + cssError + "');"; ScriptManager.RegisterStartupScript(this, typeof(MaskedEditValidator), "MaskedEditServerValidator_" + ID, script, true); } return(ok); }
protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); if (EnableClientScript) { var maskExt = (MaskedEditExtender)FindControl(ControlExtender); var target = (TextBox)maskExt.FindControl(ControlToValidate); int firstMaskPos = -1; int lastMaskPosition = -1; if (maskExt.ClearMaskOnLostFocus) { firstMaskPos = 0; lastMaskPosition = MaskedEditCommon.GetValidMask(maskExt.Mask).Length + 1; } else { firstMaskPos = MaskedEditCommon.GetFirstMaskPosition(maskExt.Mask); lastMaskPosition = MaskedEditCommon.GetLastMaskPosition(maskExt.Mask) + 1; } ScriptManager.RegisterExpandoAttribute(this, ClientID, "IsMaskedEdit", true.ToString().ToLower(CultureInfo.InvariantCulture), true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "ValidEmpty", IsValidEmpty.ToString().ToLower(CultureInfo.InvariantCulture), true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "MaximumValue", MaximumValue, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "MinimumValue", MinimumValue, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "InitialValue", InitialValue, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "ValidationExpression", ValidationExpression, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "ClientValidationFunction", ClientValidationFunction, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "TargetValidator", target.ClientID, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "EmptyValueMessage", EmptyValueMessage, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "EmptyValueText", EmptyValueBlurredText, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "MaximumValueMessage", MaximumValueMessage, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "MaximumValueText", MaximumValueBlurredMessage, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "MinimumValueMessage", MinimumValueMessage, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "MinimumValueText", MinimumValueBlurredText, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "InvalidValueMessage", InvalidValueMessage, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "InvalidValueText", InvalidValueBlurredMessage, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "InvalidValueCssClass", maskExt.OnInvalidCssClass, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "CssBlurNegative", maskExt.OnBlurCssNegative, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "CssFocus", maskExt.OnFocusCssClass, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "CssFocusNegative", maskExt.OnFocusCssNegative, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "TooltipMessage", TooltipMessage, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "FirstMaskPosition", firstMaskPos.ToString(CultureInfo.InvariantCulture), true); if (!String.IsNullOrEmpty(maskExt.CultureName) && maskExt.OverridePageCulture) { ControlCulture = CultureInfo.GetCultureInfo(maskExt.CultureName); } else { ControlCulture = CultureInfo.CurrentCulture; } switch (maskExt.MaskType) { case MaskedEditType.None: { ScriptManager.RegisterExpandoAttribute(this, ClientID, "evaluationfunction", "MaskedEditValidatorNone", true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "LastMaskPosition", lastMaskPosition.ToString(CultureInfo.InvariantCulture), true); break; } case MaskedEditType.Number: { var attibCu = ControlCulture.NumberFormat.CurrencySymbol; var attibDc = ControlCulture.NumberFormat.CurrencyDecimalSeparator; var attibTh = ControlCulture.NumberFormat.CurrencyGroupSeparator; if (maskExt.DisplayMoney != MaskedEditShowSymbol.None) { lastMaskPosition += maskExt.CultureCurrencySymbolPlaceholder.Length + 1; } if (maskExt.AcceptNegative != MaskedEditShowSymbol.None) { if (maskExt.DisplayMoney != MaskedEditShowSymbol.None) { lastMaskPosition++; } else { lastMaskPosition += 2; } } ScriptManager.RegisterExpandoAttribute(this, ClientID, "Money", attibCu, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "Decimal", attibDc, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "Thousands", attibTh, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "evaluationfunction", "MaskedEditValidatorNumber", true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "LastMaskPosition", lastMaskPosition.ToString(CultureInfo.InvariantCulture), true); break; } case MaskedEditType.DateTime: { //date var attibSep = ControlCulture.DateTimeFormat.DateSeparator; var arrDate = ControlCulture.DateTimeFormat.ShortDatePattern.Split(new string[] { ControlCulture.DateTimeFormat.DateSeparator }, StringSplitOptions.None); var attibFmt = arrDate[0].Substring(0, 1).ToUpper(ControlCulture); attibFmt += arrDate[1].Substring(0, 1).ToUpper(ControlCulture); attibFmt += arrDate[2].Substring(0, 1).ToUpper(ControlCulture); attibFmt = (maskExt.UserDateFormat == MaskedEditUserDateFormat.None ? attibFmt : maskExt.UserDateFormat.ToString()); ScriptManager.RegisterExpandoAttribute(this, ClientID, "DateSeparator", attibSep, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "DateFormat", attibFmt, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "Century", maskExt.Century.ToString(CultureInfo.InvariantCulture), true); //time attibSep = ControlCulture.DateTimeFormat.TimeSeparator; var attibSyb = String.Empty; if (String.IsNullOrEmpty(ControlCulture.DateTimeFormat.AMDesignator + ControlCulture.DateTimeFormat.PMDesignator)) { attibSyb = String.Empty; } else { attibSyb = ControlCulture.DateTimeFormat.AMDesignator + ";" + ControlCulture.DateTimeFormat.PMDesignator; } attibSyb = (maskExt.UserTimeFormat == MaskedEditUserTimeFormat.None ? attibSyb : String.Empty); if (maskExt.AcceptAMPM) { if (!String.IsNullOrEmpty(attibSyb)) { var sep = Char.Parse(attibSep); var arrSyb = attibSyb.Split(sep); lastMaskPosition += arrSyb[0].Length + 1; } } ScriptManager.RegisterExpandoAttribute(this, ClientID, "TimeSeparator", attibSep, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "AmPmSymbol", attibSyb, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "evaluationfunction", "MaskedEditValidatorDateTime", true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "LastMaskPosition", lastMaskPosition.ToString(CultureInfo.InvariantCulture), true); break; } case MaskedEditType.Date: { var attibSep = ControlCulture.DateTimeFormat.DateSeparator; var arrDate = ControlCulture.DateTimeFormat.ShortDatePattern.Split(new string[] { ControlCulture.DateTimeFormat.DateSeparator }, StringSplitOptions.None); var attibFmt = arrDate[0].Substring(0, 1).ToUpper(ControlCulture); attibFmt += arrDate[1].Substring(0, 1).ToUpper(ControlCulture); attibFmt += arrDate[2].Substring(0, 1).ToUpper(ControlCulture); attibFmt = (maskExt.UserDateFormat == MaskedEditUserDateFormat.None ? attibFmt : maskExt.UserDateFormat.ToString()); ScriptManager.RegisterExpandoAttribute(this, ClientID, "DateSeparator", attibSep, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "DateFormat", attibFmt, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "Century", maskExt.Century.ToString(CultureInfo.InvariantCulture), true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "evaluationfunction", "MaskedEditValidatorDate", true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "LastMaskPosition", lastMaskPosition.ToString(CultureInfo.InvariantCulture), true); break; } case MaskedEditType.Time: { var attibSep = ControlCulture.DateTimeFormat.TimeSeparator; var attibSyb = String.Empty; if (String.IsNullOrEmpty(ControlCulture.DateTimeFormat.AMDesignator + ControlCulture.DateTimeFormat.PMDesignator)) { attibSyb = String.Empty; } else { attibSyb = ControlCulture.DateTimeFormat.AMDesignator + ";" + ControlCulture.DateTimeFormat.PMDesignator; } attibSyb = (maskExt.UserTimeFormat == MaskedEditUserTimeFormat.None ? attibSyb : String.Empty); if (maskExt.AcceptAMPM) { if (!String.IsNullOrEmpty(attibSyb)) { var sep = Char.Parse(attibSep); var arrSyb = attibSyb.Split(sep); lastMaskPosition += arrSyb[0].Length + 1; } } ScriptManager.RegisterExpandoAttribute(this, ClientID, "TimeSeparator", attibSep, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "AmPmSymbol", attibSyb, true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "evaluationfunction", "MaskedEditValidatorTime", true); ScriptManager.RegisterExpandoAttribute(this, ClientID, "LastMaskPosition", lastMaskPosition.ToString(CultureInfo.InvariantCulture), true); break; } } } }