经过一个方法后,验证控件就不起作用了...
socg 2006-09-13 05:41:25 有个一页面a.aspx、一个用户控件b.ascx
------------------------------------------------------------
页面a.aspx中:
b.ascx,
textBox1,
button1,
RequiredFieldValidator1(验证指向textBox1)
CustomValidator1(验证指向textBox1)
------------------------------------------------------------
用户控件b.ascx中:无控件,但是有一个方法InMe(),代码如下:
public void InMe(System.Web.UI.Control box)
{
this.Controls.Clear();
this.Controls.Add(box);
}
------------------------------------------------------------
直接运行a.aspx一切正常。。。
但是在a中的Load()中加入下面代码后验证控件就不起作用了
private void Page_Load(object sender, System.EventArgs e)
{
b1.InMe(TextBox1);
b1.InMe(Button1);
b1.InMe(CustomValidator1);
b1.InMe(RequiredFieldValidator1);
}
-----------------------------------------------------------
对比两次产生的HTML:
之前Button1的HTML如下:
<input type="submit" name="Button1" value="Button" onclick="if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate(); " language="javascript" id="Button1" />
之后Button1的HTML如下:
<input type="submit" name="b1:Button1" value="Button" id="b1_Button1x" />
除了name和id的改变外居然还少了onclick事件!
------------------------------------------------------------
我在Load()中将事件手工添加
private void Page_Load(object sender, System.EventArgs e)
{
b1.InMe(TextBox1);
b1.InMe(Button1);
b1.InMe(CustomValidator1);
b1.InMe(RequiredFieldValidator1);
Button1.Attributes.Add("onclick","if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate(); ");
Button1.Attributes.Add("language","javascript");
}
运行-----客户段的验证正常,但是RequiredFieldValidator1的验证事件始终不会触发!
问题描述完了,如果不清楚的请提出来,我再补充!