首页 新闻 会员 周边 捐助

开发简单Web服务器控件碰到的问题-何时调用基类方法?

0
悬赏园豆:5 [已解决问题] 解决于 2011-05-23 13:55

做一个简单的Web服务器控件:变色的Label

 public class MyLabel : Label
    {
        protected override void AddAttributesToRender(HtmlTextWriter writer)
        {

            this.Attributes.Add("onmouseover", "style.color='#ff0000';style.cursor='pointer';");
            this.Attributes.Add("onmouseout", "style.color='#000000';style.cursor='default';");
            base.AddAttributesToRender(writer);
        }
    }

运行正常。如果把:base.AddAttributesToRender(writer);这句移到前面,即:

            base.AddAttributesToRender(writer);

           this.Attributes.Add("onmouseover", "style.color='#ff0000';style.cursor='pointer';");
            this.Attributes.Add("onmouseout", "style.color='#000000';style.cursor='default';");

就发现没效果了。不明白,为什么base.AddAttributesToRender(writer);这句只能放后面?

而另外一个简单控件:

        protected override void RenderContents(HtmlTextWriter output)
        {
            base.RenderContents(output);
            string template = "<h{0}>这是一个简单的Web控件</h{0}>";
            string html = "";
            for (int i = 1; i < 6; i++)
            {
                html += string.Format(template, i);
            }
            output.Write(html);
        }

这句base.RenderContents(output);却要放在前面?

开发简单Web服务器控件时 ,究竟应该何时调用基类方法?

问题补充:

又进行了测试,对于RenderContents方法,base.RenderContents(output);放前面,后面都可以,对于protected override void Render(HtmlTextWriter writer),base.Render(writer);放前面,后面都可以,但就是

protected override void AddAttributesToRender(HtmlTextWriter writer)方法

base.AddAttributesToRender(writer);只能放后面。

zhouhb的主页 zhouhb | 菜鸟二级 | 园豆:201
提问于:2011-05-23 10:34
< >
分享
最佳答案
0

   base.AddAttributesToRender(writer); 我考虑应该是这句话就是将属性值输出到HTML字符串输出流里面的。你再这个句话的后面添加,那就不会有效了!仅供参考!

收获园豆:5
小小刀 | 小虾三级 |园豆:1991 | 2011-05-23 10:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册