2011-04-06 54 views
1

有很多方法可以为Asp.Net构建自定义控件。有些人使用System.Web.UI.WebControls.WebControl作为基类,其他人使用System.Web.UI.Control作为其新控件的基类。构建自定义控件:使用WebControl还是Control?

选择其中一个作为基础的原因是什么?

+2

[\ [ASP.NET \]可能的重复在用户控件,服务器控件和自定义控件之间有什么区别?](http://stackoverflow.com/questions/994009/asp-net-what-are-用户控件 - 服务器控件 - 用户之间的差异) – Jacob 2011-04-06 18:25:46

+1

@Jacob这个问题不是重复的,因为它谈论的是基类。不是关于控件类型(ascx和c#控件)。 – 2011-04-06 18:28:34

+1

此外,这两个属于自定义控件的类别,其中.Controls用于UI和.WebControls用于用户界面的控件。 – 2011-04-06 18:29:52

回答

1

System.Web.UI.WebControls.Webcontrol派生自System.Web.UI.Control并增加了对样式(BackgroundColor,Style等)的支持。

Control默认情况下不具备该支持,您必须通过创建属性并处理Render()方法中的属性来自行实现。 WebControls也带有主题和工具箱支持某些共同的属性。

+0

好点!但是我并没有使用主题,所以我会认为我会坚持'Control'类。 – 2011-04-12 09:37:06

1

控件没有WebControl呈现给响应对象的用户界面。

+0

用户界面可以通过覆盖Render方法在控件上呈现。 – 2011-04-06 18:23:08

+1

是的,但是您需要花费额外的不必要的开发工作。另外,WebControls类引入了我们所有人都期望从我们可见的ASP.NET控件(如Visible属性)中获得的所有那些流行的小功能。 – 2011-04-06 18:27:18

+0

@Ben f。检查:http://msdn.microsoft.com/en-us/library/system.web.ui.control.visible.aspx控制也有一个可见。 – 2011-04-06 18:51:52

0

当你的控件要在呈现的页面上显示一个UI组件时,你应该使用System.Web.UI.WebControls.WebContro l,因为它包含了各种管道代码来生成一个UI(尽管仍然需要大量的工作来创建该UI)。

System.Web.UI.Controls适用于您的控件在呈现的页面上没有UI时(请考虑驻留在工具箱中的一些ASP.NET DataSource控件,可以将它们拖动到页面上,不呈现任何内容并采取行动作为获取数据到具有UI的GridView控件的管道)。

See this MSDN article

+0

唯一的区别是UI?像BackgroundColor和类似的东西? – 2011-04-06 18:31:37

+0

区别在于WebControls有一个客户端,在解释.aspx页面后在浏览器中呈现UI,而控件对最终用户没有任何可辨别的UI(它们严格在幕后管道代码中) – 2011-04-06 18:35:36