如果我们的服务器控件需要较完备的GUI,譬如需要控制HTML元素的附加属性字体、颜色、高度等,那么应当从Control的子类WebControl继承,以得到所需的基础性能。从WebControl类派生,需要遵守通常如下的约定:
1、 包含从System.Web.UI.WebControl的命名空间的引用
2、 不能够重载Render方法直接向输出流提供数据,而应当重载RenderContents方法来实现
3、 通常情况下,WebControl的派生类最终在输出流中表现为<span>标签,但是如果自己希望使用其它的标签,就应当重载WebControl的tagKey属性或者TagName属性。
经验(或者说MS建议):
1、 如果控件生成非可视化元素或显示给非HTML客户端,那么应当选用Control作为符类继承。如<meta><xml>等标签
2、 提供HTML界面的从WebControl继承
3、 扩展修改功能时应当从一个已存控件派生,但是不要从System.Web.UI.HtmlControls命名空间派生,因为vs.net设计器不承认从该类派生的控件
为了能够支持设计器,实现设计期,那么需要考虑attribute(元数据)的编程。
视图状态
web编程很重要的一个方面是状态管理,也就是解决在无状态的http协议基础上的状态管理问题。在asp类web编程技术时代,这通常通过以下技术手段来解决:
1、 Session