本来的的控件是继承 正则验证控件的
因为验证控件默认生成的HTML为:<span id="ctl02" style="color:Red;display:none;">*</span>
然后我想在网页显示的时候要让这个验证控件显示出来这是思归老大给的可行protected override void AddAttributesToRender(HtmlTextWriter writer)
{
    base.AddAttributesToRender(writer);
    writer.AddAttribute("style", "");
}
后来我又但多了一个控件 这个控件添加多一个验证控件在他里面 幕白兄老大的方法
这个控件是继承System.Web.UI.WebControls.WebControlprotected override void OnInit(EventArgs e)
{
    RequiredFieldValidator req = new RequiredFieldValidator();
    this.Controls.Add(req);
}这个时候我没有办法用思归老大给的那个方法来做了后来只能用
protected override void Render(HtmlTextWriter output)
{
    base.Render(output);
    output.Write("<script type='text/javascript'> document.getElementById('" + reg.ClientID + "').style.display='';</script>");
}这种方法
这样能够得到我要的效果
但是过程感觉不是很好因为这时他生在的HTML是:<span id="WebRev1"><span id="ctl02" style="color:Cyan;display:none;">*</span><span id="ctl03" style="color:Lime;display:none;">*</span></span><script type='text/javascript'> document.getElementById('ctl03').style.display='';</script>
而我想有没有办法让他生成为
<span id="WebRev1"><span id="ctl02" style="color:Cyan;display:none;">*</span><span id="ctl03" style="color:Lime;">*</span></span>我要怎么办呢?我在ASP.NET 和 控件技术区都开了贴,出答出来就到两边接分谢谢大家PS:可能大家会说效果出来了就可以写JS也没什么不好,
是的,显然这里写js没什么不好,但是要是我的控件里面添加了N个控件每一个控件都要修改他的N个Style
那这样写在样面中的js会有很多
要是能够在设计的时候像
protected override void AddAttributesToRender(HtmlTextWriter writer)
{
    base.AddAttributesToRender(writer);
    writer.AddAttribute("style", "");
}
这样给他去掉的话那就太OK了

解决方案 »

  1.   

    protected override void OnInit(EventArgs e)
    {
        //RequiredFieldValidator req = new RequiredFieldValidator();
        //换成你自定义的验证控件
        // YourValidator req = new YourValidator() ; // YourValidator 继承RequiredFieldValidator
        this.Controls.Add(req);
    }
      

  2.   

    看这个是不是你要的。 protected override void RenderChildren(HtmlTextWriter writer)
            {
                WebControl c = (WebControl)this.Controls[0];
                System.IO.StringWriter sw = new System.IO.StringWriter();            HtmlTextWriter wt = new HtmlTextWriter(sw);            c.RenderControl(wt);            writer.Write(sw.ToString().Replace("display:none", ""));
                wt.Close();
                sw.Close();
                c = (WebControl)this.Controls[1];
                c.RenderControl(writer);
                
            }