(9)重写父类的Render方法,在该方法中将服务器控件的内容传递给HtmlTextWriter对象以在客户端呈现内容,在该方法中调用了
PrepareControlForRender方法: protected override void Render(HtmlTextWriter writer)
{
PrepareControlForReader();
base.Render(writer);
}
{
PrepareControlForReader();
base.Render(writer);
}
(10)实现PrepareControlForRender方法,该方法用于在呈现前进行其他样式的设置,在本控件中,只是简单的设置了表格的CellSpacing和CellPadding属性:
private void PrepareControlForReader()
{
if (this.Controls.Count < 1)
return;
Table table = (Table)this.Controls[0];
table.CellSpacing = 0;
table.CellPadding = 0;
}
{
if (this.Controls.Count < 1)
return;
Table table = (Table)this.Controls[0];
table.CellSpacing = 0;
table.CellPadding = 0;
}
(11)在网站中添加ControlLibrary类库的引用,并在Default.aspx页面中加入自定义控件的声明:
<%@ Register Assembly="ControlLibrary" Namespace="ControlLibrary" TagPrefix="cc" %>
(12)在页面相应位置定义自定义控件:
<%@ Register Assembly=?ControlLibrary? Namespace=?ControlLibrary? TagPrefix=?cc? %>
(13)预览效果。
在多个页面使用自定义控件在每一个页均需要加入声明,有一个更好的替代方法是在web.config文件中声明自定义控件,在配置节中加入 <pages>
<controls>
<add tagPrefix="cc" assembly="ControlLibrary" namespace="ControlLibrary"/>
</controls>
</pages>
<add tagPrefix="cc" assembly="ControlLibrary" namespace="ControlLibrary"/>
</controls>
</pages>
4. 总结
本次任务里我们通过继承WebControl类创建了一个很简单的星级自定义控件,随着学习的加深您将逐渐意识到该控件实际上包含了自定义控件开发的基本步骤——创建自控件、设置样式、进行呈现,通过把相应的动封装为不同的方法使代码看起来更清晰,并且掌握了如何在自定义控件中使用资源文件,这在自定义控件使用大量样式或者脚本时尤其有用。最后讲解了在开发完控件后如何在页面中使用。