当页面有ID重复的控件时,使用Validator后仍能正常工作

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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值