public class REV : System.Web.UI.WebControls.RegularExpressionValidator { protected override void Render(System.Web.UI.HtmlTextWriter writer) { System.Type t = this.GetType(); while (t.BaseType != null) { if (t.FullName == "System.Web.UI.WebControls.BaseValidator") { System.Reflection.FieldInfo fi = t.GetField("propertiesChecked", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); fi.SetValue(this, true); fi = t.GetField("propertiesValid", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); fi.SetValue(this, true); break; } t = t.BaseType; } base.Render(writer); } private string toValidateControlCleintID; public string ToValidateControlCleintID { set { toValidateControlCleintID = value; } get { return toValidateControlCleintID; } } protected override void AddAttributesToRender(System.Web.UI.HtmlTextWriter writer) { try { base.AddAttributesToRender (writer); } catch{}; bool flag1 = !this.Enabled; if (flag1) { this.Enabled = true; } if (this.RenderUplevel) { if (this.ID == null) { writer.AddAttribute("id", this.ClientID); } if (this.ControlToValidate.Length > 0) { writer.AddAttribute("controltovalidate", toValidateControlCleintID); } if (this.ErrorMessage.Length > 0) { writer.AddAttribute("errormessage", this.ErrorMessage, true); } ValidatorDisplay display1 = this.Display; if (display1 != ValidatorDisplay.Static) { writer.AddAttribute("display", System.Web.UI.PropertyConverter.EnumToString(typeof(ValidatorDisplay), display1)); } if (!this.IsValid) { writer.AddAttribute("isvalid", "False"); } if (flag1) { writer.AddAttribute("enabled", "False"); } } writer.AddAttribute("evaluationfunction", "RegularExpressionValidatorEvaluateIsValid"); writer.AddAttribute("validationexpression", base.ValidationExpression); if (flag1) { this.Enabled = false; } } }
调用代码:
REV _ValidatorControl = new REV(); _ValidatorControl.Style.Add( "POSITION", "absolute" ); double left = x.Value + width.Value + 4; //the space width is 4 _ValidatorControl.Style.Add("LEFT", left.ToString()); _ValidatorControl.Style.Add( "TOP", y.ToString() ); _ValidatorControl.ID = "RegularExpressionValidationOf" + inputControl.ID; _ValidatorControl.ControlToValidate = inputControl.ID; _ValidatorControl.ToValidateControlCleintID = inputControl.ClientID; _ValidatorControl.Text = "*"; _ValidatorControl.ErrorMessage = errorMsg; switch(nFormat) { case 1: { _ValidatorControl.ValidationExpression = "^(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])(:([0-5]?[0-9]))?$"; break; } case 2: { _ValidatorControl.ValidationExpression = "^(?:(?:0?[1-9]|1[012])(?::[0-5]//d){0,2}(?://x20[aApP][mM]))?$"; break; } } container.Controls.Add(_ValidatorControl);