继承自Control与Web控件

时间:2009-07-13 18:55:57

标签: asp.net custom-controls custom-server-controls

我已经阅读了这一点,它解释了在创建自定义控件时何时选择Web Control vs. Control,但这还不够。我已经看到自定义控件从它们向UI分发内容时继承。

http://msdn.microsoft.com/en-us/library/yhzc935f.aspx

“如果您的控件在客户端上呈现用户界面(UI)元素或任何其他可见元素,您应该从System.Web.UI.WebControls .. ::。WebControl(或派生类)派生您的控件。如果您的控件呈现在浏览器中不可见的元素(例如隐藏元素或元元素),则从System.Web.UI .. ::。Control派生您的控件.WebControl类派生自Control并添加样式 - 相关属性,如Font,ForeColor和BackColor。此外,从WebControl派生的控件参与ASP.NET的主题功能,而无需您做任何额外的工作。“

所以使用WebControl的唯一原因是你想使用他们的样式功能吗?我只是想用stringbuilder输出字符串,所以我不关心那些东西。我更喜欢直接使用无表格设计和字符串来形成我的控件呈现的HTML。

3 个答案:

答案 0 :(得分:10)

<强>控制

从Control类派生允许我们的控件利用Control类提供的呈现方法,以及ViewState的使用。

<强>的WebControl

WebControl类派生自Control类。但是,如果我们从WebControl派生自定义控件,我们可以免费支持我们控件的许多视觉方面,如字体大小,CSS类,背景颜色等。

我应该从哪个班级派生出来?

当您创建需要很少或不需要UI的自定义控件时,您应该从Control类派生。如果您的控件确实需要大量的UI支持,那么您应该从WebControl派生。

来自:http://dotnetslackers.com/articles/aspnet/ASPNETCustomControlsPart1.aspx

答案 1 :(得分:2)

除非你告诉它,否则WebControl不会渲染表或类似的东西。它具有的样式功能是大多数用户期望通过UI呈现的控件。

使用它不会花费太多。试一试,看看它是否会引起任何问题。

答案 2 :(得分:0)

那么,你有问题要问吗?我认为这两者之间的差异在MSDN文章中得到了很好的解决。