庖丁解牛ASP.NET3.5控件和组件开发技术-(3)从零开始开发服务器控件

 第二章服务器控件开发中的调试技术略,因为在开发当作调试技术用的很多。

  1. 选择基类:Control具有最基本的属性,WebControl有外观布局和样式等属性,CompositeControl实现了INamingContainer接口,现有控件。
  2. 控件呈现顺序:
  • RenderControl
  • Render
  • RenderBeginTag
  • RenderContents
  • RenderEndTag

    3. Render呈现控件的基本方式

方式一:

方式二:

方式三:

第三种方式比第一二中方式效率低些,因为他要花些时间解析成HTML控件。

4. AddAttributesToRender方法,一般与RenderContents合用。

5。 CreateChildControls方法一般用于创建组合控件。

6。 INamingContainer接口,继承了此即可的控件,他的UniqueID和ClientID就会加上父控件的UniqueID和ClientID,分割符分别为$,_这样解决了控件命名冲突。

7. 实现复合控件的几个方法: CreateChildControls,  ChildControlsCreated属性 ,EnsureChildControls,RecreateChildControl,Control属性, HasControls方法 HasEvent方法,FindControl方法

this.NamingContainer.ClientID + "_" + this.ID == this.ClientID;

8. 常用的开发技巧:

  •  DesignMode运行模式和设计模式
  • 屏蔽基类控件中的属性:Bindable,Browsable,EnditBrowsable
  • Page.Request.Browser属性检查当前浏览器的性能。
  • 设置控件ID的规范,主要$和_运用。
  • FindControl通过遍历找控件

  • 映射服务端控件值到客户端:

writer.AddAttribute("key",this.value);

就可以通过document.getElementBuId("").key获得

使用RegisterExpanddoAttribute方法

Page.ClientScript.RegisterExpandoAttribute("controlID","key",this.value)

  • 禁止派生CompositeControl控件创建子控件
  • 使用CreateChildControls注意事项:
  • 设计元属性DefaultValue
  • Render里有很多基类资源
  • 条件编译

你可能感兴趣的:(asp.net)