AjaxControlToolkit.MaskedEditValidator.OnPreRender C# (CSharp) Метод

OnPreRender() защищенный Метод

protected OnPreRender ( EventArgs e ) : void
e EventArgs
Результат void
        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;
                        }
                }
            }
        }