【问题标题】:Building custom controls: use WebControl or Control?构建自定义控件:使用 WebControl 还是 Control?
【发布时间】:2011-07-31 01:49:22
【问题描述】:

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

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

【问题讨论】:

标签: c# asp.net controls custom-controls web-controls


【解决方案1】:

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

【讨论】:

  • 用户界面可以通过重写 Render 方法在控件上呈现。
  • 是的,但是您需要付出天文数字般的额外开发工作。此外,WebControls 类还引入了我们都期望从可见的 ASP.NET 控件中获得的所有流行的小功能(例如 Visible 属性)。
  • @Ben f.检查:msdn.microsoft.com/en-us/library/… Control 也有一个 Visible。
【解决方案2】:

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

System.Web.UI.Controls 用于当您的控件在呈现页面上没有 UI 时(想想一些驻留在工具箱中的 ASP.NET DataSource 控件,可以拖到页面上,不呈现任何内容,并且充当将数据获取到具有 UI 的 GridView 控件的管道)。

See this MSDN article.

【讨论】:

  • 唯一的区别是用户界面?喜欢 BackgroundColor 之类的东西?
  • 不同之处在于 WebControls 有一个客户端,在解释 .aspx 页面后在浏览器中呈现 UI,而 Controls 没有任何对最终用户可见的 UI(它们严格位于场景管道代码)
【解决方案3】:

System.Web.UI.WebControls.Webcontrol 派生自 System.Web.UI.Control 并添加了对样式(背景颜色、样式等)的支持。

Control 默认情况下不支持,您必须自己通过创建属性来实现它并在Render() 方法上处理这些属性。 WebControls 还为某些常见属性提供主题和工具箱支持。

【讨论】:

  • 好点!但无论如何我都没有使用主题,所以我想我会坚持使用Control 类。
猜你喜欢
  • 2012-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多