【问题标题】:User Control Project Types in Asp.net , Which one to use?Asp.net 中的用户控制项目类型,使用哪一种?
【发布时间】:2015-09-17 12:41:00
【问题描述】:

在 Asp.Net 中工作和开发用户控件时,基本上有三种这样的项目:

1.) 作为类库的用户控件

2.) 用户控件作为类文件

3.) 常见的.ASCX方式

您能否分享每种项目类型的优缺点以及我应该使用哪一种?

选择特定项目类型时需要考虑哪些要点?我已经阅读了很多这方面的内容,但仍然感到困惑。您能否提供更具体的示例,例如我将在哪里使用 .ASCX 控件或任何其他控件?

【问题讨论】:

    标签: asp.net user-controls custom-controls web-controls asp.net-4.5


    【解决方案1】:

    嗯...这是非常主观的。让我们现在开始...

    User Controls- .ASCX

    用户控件通常保留在特定站点内重复使用。如果您需要控件在站点之间可重用,您应该考虑将功能抽象为 Web 服务器控件。

    快速总结:

    简而言之,您将功能封装到可以在单个网站的边界内共享的用户控件中,例如开发网站的HeadersFootersDisclaimersCopyright 部分,因为这些通常是显示在每个页面上,并且主要包含仅与单个网站有关的信息。


    Custom Web Server Controls: Class File, Class Library

    但是,有时您需要编写可跨多个网站或项目使用的功能。

    何时使用/用例场景:

    例如,假设一个品牌联合利华(Unilever)拥有多个网站,分别用于其化妆品、食品、冰淇淋……而要求是这些多个网站中的每一个都必须有一个 ContactUS/ComplaintUS 表格。每个表单还需要一些更丰富、用户友好的下拉列表,其中显示与该品牌有关的数据必须由用户选择。

    深入研究优点/缺点和类似的开发人员资料:

    与用户控件相比,自定义 Web 服务器控件更易于其他人(开发人员)使用。您可以为您控制的客户创建完整的设计时体验。这包括完整的ToolboxDesigner 支持,例如DefaultProperty

    由于 ToolBox 和 Designers 等功能,在创建自定义 Web 服务器控件(与简单的用户控件相比)时,您最终会编写更多代码。

    创建自定义 Web 服务器控件有两种常用方法。

    1. 创建一个直接从WebControl 类继承的Web 服务器控件。 WebControl 类提供了一组基本功能。借助此功能,您可以使用与 UI 相关的属性(例如 BackColorForeColorHeightWidth)来处理 UI 样式。

      但是,这会给您留下很多工作来完成开发 控制。

    2. 从现有的 Web 服务器控件 (TextBox, Label ...) 继承,该控件已经提供了控件所需的核心功能,例如 UI 功能。

      这肯定会给你一个快速的开始,让你集中注意力 主要是什么让你的控制与众不同。你不用太担心 关于创建 UI 处理的基础知识,因为它已经在 这些现有的控制。这是最常见的情况

    了解构建和支持自定义 Web 服务器控件的感知困难,您会看到很少/很少有团队创建自定义 Web 服务器控件的实例。

    那么,我们现在可以下结论了吗?

    结论

    • 无论采用何种方法,请仔细考虑如何重用控件。如果自定义 Web 服务器控件打算在多个网站上使用,则应将新的自定义 Web 服务器控件类放入类库项目中以创建一个可共享的 DLL 文件。
    • 如果自定义 Web 服务器控件仅适用于当前网站,您可以将自定义 Web 服务器控件的类文件添加到网站。(然后出现使用用户控件或自定义 Web 控件的争论,因为它是仅限于一个网站)。嗯...我见过很少有其他团队/网站/项目实际上从未使用过自定义 Web 控件的案例,所以为什么要费心开发这样一个自定义控件。

    补充说明:

    最后我想在这里提到很少使用的用户控件Templated ASP.NET User Controls

    模板化用户控件的强大之处在于将控件数据与其表示分离。这些控件的 UI 在设计时已经完全开发和定制。除此之外,我在这里没有太多可争论的。继续阅读 MSDN 链接和其他链接,如果您对使用(...不使用...)这个控件有更好的论据,请实施它并编辑我的答案。

    【讨论】:

      猜你喜欢
      • 2012-11-29
      • 1970-01-01
      • 2015-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多