【问题标题】: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 服务器控件。
快速总结:
简而言之,您将功能封装到可以在单个网站的边界内共享的用户控件中,例如开发网站的Headers、Footers、Disclaimers 和Copyright 部分,因为这些通常是显示在每个页面上,并且主要包含仅与单个网站有关的信息。
Custom Web Server Controls: Class File, Class Library
但是,有时您需要编写可跨多个网站或项目使用的功能。
何时使用/用例场景:
例如,假设一个品牌联合利华(Unilever)拥有多个网站,分别用于其化妆品、食品、冰淇淋……而要求是这些多个网站中的每一个都必须有一个 ContactUS/ComplaintUS 表格。每个表单还需要一些更丰富、用户友好的下拉列表,其中显示与该品牌有关的数据必须由用户选择。
深入研究优点/缺点和类似的开发人员资料:
与用户控件相比,自定义 Web 服务器控件更易于其他人(开发人员)使用。您可以为您控制的客户创建完整的设计时体验。这包括完整的Toolbox 和Designer 支持,例如DefaultProperty。
由于 ToolBox 和 Designers 等功能,在创建自定义 Web 服务器控件(与简单的用户控件相比)时,您最终会编写更多代码。
创建自定义 Web 服务器控件有两种常用方法。
-
创建一个直接从WebControl 类继承的Web 服务器控件。 WebControl 类提供了一组基本功能。借助此功能,您可以使用与 UI 相关的属性(例如 BackColor、ForeColor、Height 和 Width)来处理 UI 样式。
但是,这会给您留下很多工作来完成开发
控制。
-
从现有的 Web 服务器控件 (TextBox, Label ...) 继承,该控件已经提供了控件所需的核心功能,例如 UI 功能。
这肯定会给你一个快速的开始,让你集中注意力
主要是什么让你的控制与众不同。你不用太担心
关于创建 UI 处理的基础知识,因为它已经在
这些现有的控制。这是最常见的情况
了解构建和支持自定义 Web 服务器控件的感知困难,您会看到很少/很少有团队创建自定义 Web 服务器控件的实例。
那么,我们现在可以下结论了吗?
结论
- 无论采用何种方法,请仔细考虑如何重用控件。如果自定义 Web 服务器控件打算在多个网站上使用,则应将新的自定义 Web 服务器控件类放入类库项目中以创建一个可共享的 DLL 文件。
- 如果自定义 Web 服务器控件仅适用于当前网站,您可以将自定义 Web 服务器控件的类文件添加到网站。(然后出现使用用户控件或自定义 Web 控件的争论,因为它是仅限于一个网站)。嗯...我见过很少有其他团队/网站/项目实际上从未使用过自定义 Web 控件的案例,所以为什么要费心开发这样一个自定义控件。
补充说明:
最后我想在这里提到很少使用的用户控件Templated ASP.NET User Controls
模板化用户控件的强大之处在于将控件数据与其表示分离。这些控件的 UI 在设计时已经完全开发和定制。除此之外,我在这里没有太多可争论的。继续阅读 MSDN 链接和其他链接,如果您对使用(...不使用...)这个控件有更好的论据,请实施它并编辑我的答案。