.NET服务器控件编程学习手记
1.用户控件模型
用户控件与ASP.NET页面同样具有"所见所得"和声明性样子,并以.ASCX为扩展名存储成文本的形式。用户控件不需要预编译。当用户控件出现在.ASPX页面时,
页面解释器动态地从.ASPX页面中动态生成一个类页面,并将其编译到一个配件中。由于用户控件是动态创建的,因此不能用new来创建用户控件的实例。如果要
通过编程的方式来创建用户控件,需要调用包含页面的LoadControl方法。
用户控件中的URL:当用户控件中包含图片等文件需嵌入URL时,需要用到page.ResolveUrl(url)方法来解决相对路径问题。
2.自定义控件编程模型
a.自定义控件设计期支持
b.如果自定义控件不包含UI控件则应从control基类派生,否则应该从webcontrols类派生或system.web.UI.webControls命名空间下的控件派生。
c.Control的呈现(Rendering) 三个方法
{
protected virtural void Render(HtmlTextWriter writer )
protected virtural void RenderChildren(HtmlTextWriter writer)
public void RenderControl(HtmlTextWriter writer)
}
.ASPX页面执行,生成控件树过程:page页面建立一个HtmlTextWriter实例,将该HtmlTextWriter对象传递给RenDerControl方法。RenderControl方法检查
该控件的visible属性是否为真,如果为真,RenderControl方法调用Render方法,而Render方法的实现中默认要调用RenderChildren方法。RenderChildren方法默认调用每个子控件的RenderControl方法。通过这种递归最终生成控件树。
用户控件与ASP.NET页面同样具有"所见所得"和声明性样子,并以.ASCX为扩展名存储成文本的形式。用户控件不需要预编译。当用户控件出现在.ASPX页面时,
页面解释器动态地从.ASPX页面中动态生成一个类页面,并将其编译到一个配件中。由于用户控件是动态创建的,因此不能用new来创建用户控件的实例。如果要
通过编程的方式来创建用户控件,需要调用包含页面的LoadControl方法。
用户控件中的URL:当用户控件中包含图片等文件需嵌入URL时,需要用到page.ResolveUrl(url)方法来解决相对路径问题。
2.自定义控件编程模型
a.自定义控件设计期支持
b.如果自定义控件不包含UI控件则应从control基类派生,否则应该从webcontrols类派生或system.web.UI.webControls命名空间下的控件派生。
c.Control的呈现(Rendering) 三个方法
{
protected virtural void Render(HtmlTextWriter writer )
protected virtural void RenderChildren(HtmlTextWriter writer)
public void RenderControl(HtmlTextWriter writer)
}
.ASPX页面执行,生成控件树过程:page页面建立一个HtmlTextWriter实例,将该HtmlTextWriter对象传递给RenDerControl方法。RenderControl方法检查
该控件的visible属性是否为真,如果为真,RenderControl方法调用Render方法,而Render方法的实现中默认要调用RenderChildren方法。RenderChildren方法默认调用每个子控件的RenderControl方法。通过这种递归最终生成控件树。

浙公网安备 33010602011771号