📄 maskededitvalidator.cs
字号:
set
{
_MinimumValue = value;
}
}
[DefaultValue("")]
[Category("MaskedEdit")]
public string MinimumValueMessage
{
get
{
if (_MessageMin == null)
{
return string.Empty;
}
return _MessageMin;
}
set
{
_MessageMin = value;
}
}
[DefaultValue("")]
[Category("MaskedEdit")]
public string MinimumValueBlurredText
{
get
{
if (_TextMin == null)
{
return string.Empty;
}
return _TextMin;
}
set
{
_TextMin = value;
}
}
[DefaultValue("")]
[TypeConverter(typeof(MaskedEditTypeConvert))]
[RequiredProperty()]
[Category("MaskedEdit")]
public string ControlExtender
{
get
{
if (_ControlExtender == null)
{
return string.Empty;
}
return _ControlExtender;
}
set
{
_ControlExtender = value;
}
}
[System.Diagnostics.CodeAnalysis.SuppressMessage ("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase", Justification="Don't want to change interaction with ScriptManager")]
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) && MaskExt.OverridePageCulture)
{
ControlCulture = System.Globalization.CultureInfo.GetCultureInfo(MaskExt.CultureName);
}
else
{
ControlCulture = System.Globalization.CultureInfo.CurrentCulture;
}
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 ControlPropertiesValid()
{
return (FindControl(ControlToValidate) is System.Web.UI.WebControls.TextBox);
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "Control author's attempt to simplify the catching of numerous isolated parsing exceptions")]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity", Justification = "Cyclomatic complexity issues not currently being addressed")]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1505:AvoidUnmaintainableCode", Justification = "Maintainability index issues not currently being addressed")]
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))
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -