【发布时间】:2011-12-16 22:01:08
【问题描述】:
谁能告诉我是否应该在我的项目中尽可能多地使用用户控件? Ff 那么为什么,如果不是,为什么不呢?
【问题讨论】:
标签: asp.net user-controls
谁能告诉我是否应该在我的项目中尽可能多地使用用户控件? Ff 那么为什么,如果不是,为什么不呢?
【问题讨论】:
标签: asp.net user-controls
这是一个有趣的问题;但是这样想。
您刚刚编写了一个表格,列出了所有用户。您在网站的“列出用户”页面上显示此内容。
在“查找用户”页面上,您可能希望能够显示用户列表。您是否像以前一样重写相同的 HTML、代码、javascript、CSS?或者您是否重复使用该控件,这次添加了按用户名或其他属性进行过滤的功能?
本质上,用户控件用于打包您网站的可重复使用部分。无需在各处重复相同的代码,您可以将其打包到用户控件中,然后只需添加适当的标记即可将其添加到您想要的任何页面。
此外,您刚刚在项目中创建了一个控件来负责处理某些功能 - 它的所有逻辑都在一个位置并与其他代码分开。这也是一个重要的概念,因为它可以防止所有代码混在一起。在用户示例中,您可以通过界面与用户列表进行交互,而不是将其与可能执行不同操作的其他代码混合。这称为SRP,可能是一件好事。
作为一个实际示例,我们有一个显示我们产品列表的控件。我们可以在 Find 屏幕、Admin 屏幕、“Products Like this”屏幕和“Products you have selected”屏幕上重复使用相同的控件。这段代码包含很多逻辑,都在一个地方,所以维护方便,复用也很简单。
用户控件可能是一件非常好的事情。因此,当您觉得可以打包一组现有控件、HTML 等时,您应该使用它们。这使它们可重用,并且更易于维护。
还有自定义控件的概念 - 这些通常是现有控件的重新实现 - 例如,您可能有一个 ExtendedTextBox,它可以在有人键入文本时验证文本。
【讨论】:
用户控件之所以好的原因与子例程/函数/方法好的原因相同:代码(和标记)重用。
与子例程一样,如果控件执行诸如修改全局状态、进行大量 DB 或其他并非总是需要的脱机调用、引入不可避免的同步阻塞等操作,则控件可能会成为问题。它们还可以添加不必要的如果它们从不被重复使用,就会增加复杂性。
【讨论】:
我会尽可能使用 VS IDE Toolbox 提供的控件。如果环境提供的东西没有完全按照我的意愿去做,我只会滚动我自己的控制。
【讨论】: