【原创】ASP.NET自定义控件开发点滴(一)

 出处:http://blog.csdn.net/caoxicao
 作者:草惜草
 转载请注明出处

这次在学习DotNet自定义控件开发过程中将会把一些小小的心得写出来,一来让自己记得更加牢固,二来也可以为后来人提供学习的方向。

1. 自定义控件从WebControl类而不是从Control类派生而来,那么就能够继承到许多附加的属性。
     比如高度,宽度,字体和其他样式相关的属性。这些属性可以允许页面开发者自定义控件的外观。当从WebControl类中派生时,应该遵循如下约定:
   ◎ 包含一个到System.Web.UI.WebControls命名空间的引用。
   ◎ 不要通过重载Render方法来直接向外输出流中写数据,这是因为WebControl的Render方法实现了一段代码,这段代码向外提供带有样式信息的标签。如果想在控件的标签内提供内容,那么可以用重载RenderContents方法来实现。

2. 为控件选择基类

    ◎ 如果控件要生成非可视化的元素或者显示给非HTML客户端,那就因该从System.Web.UI.Control类派生。
        标签<meta >和<xml>就是非可视化元素显示的例子。

    ◎ 如果想提供一些在客户端生成可视化界面的HTML,那么就应该从System.Web.UI.WebControls.WebControl派生。

    ◎ 当想扩展或者修改控件的功能时,应该从一个已经存在的控件派生,比如标签、按钮和文本框。可以任何一个System.Web.UI.WebControls命名空间中的控件或者自定义控件派生。但是不要从System.Web.UI.HtmlControls命名控件中的控件派生。

     理解这部分,我们最好来看看WebContorl中Render方法的实现。

       protected overide void Render(HtmlTextWriter writer){
                RenderBeginTag(writer);
                RenderContents(writer);
                RenderEndTag(writer);
        }

  由此可见,WebControl中的Render已经被格式化了的。其中,RenderBeginTag表示标签的开始,如:writer.RenderBeginTag("<H2>") writer.RenderEndTag()即可表示包含在<H2></H2>

再来看看WebControl中的RenderContents实现代码:
protected virtual void RenderContents(HtmlTextWriter writer){
         //可以看到RenderContents方法回调了基类的Render方法
          base.Render(writer)
}

综上,当想要生成Web控件标签中的内容时,需要重载RenderContents方法。

======================================
今天先写到这里。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值