GetValidMask() public static method

public static GetValidMask ( string text ) : string
text string
return string
コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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;
                }
                }
            }
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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;
                }
                }
            }
        }