2011-12-16 97 views

回答

5

这是一个有趣的问题;但是可以这样想。

你刚刚写了一张表,列出了你所有的用户。您可以在网站的“列表用户”页面上显示。

在“查找用户”页面上,您可能希望能够显示用户列表。你是否像以前一样重写相同的HTML,代码,JavaScript,CSS?或者你是否重用了控件,这次添加了用户名或其他属性进行过滤的功能?

本质上,用户控件可以打包网站的可重用位。您可以将其打包在用户控件中,而不是将其添加到任何地方,只需添加适当的标签即可将其添加到您想要的任何页面。

此外,你刚刚在你的项目中做了一个控制,负责处理某些功能 - 它的所有逻辑都在一个地方,并与其他代码分开。这也是一个重要的概念,因为它可以阻止所有的代码混杂在一起。在用户示例中,您可以通过界面与用户列表进行交互,而不是将其与其他可能做不同事情的代码混合。这被称为SRP,可以是一件好事。

作为一个实际的例子,我们有一个显示我们产品列表的控件。我们可以在查找屏幕,管理员屏幕,“像这样的产品”屏幕以及“您选择的产品”屏幕上重复使用相同的控件。这段代码包含许多逻辑,它们都集中在一个地方,因此可以很容易地维护它,并且它也可以很简单地重用。

用户控件可以是一件非常好的事情。所以你应该使用它们,当你觉得你可以打包一组现有的控件,HTML等。它使它们可重用,并且更容易维护。

还有自定义控件的概念 - 这些通常是现有控件的重新实现 - 例如,您可能有一个ExtendedTextBox,用于验证文本是否有人输入它。

你可以阅读更多about both kinds of controls here

+1

我喜欢的另一个例子是当我将标签,文本框,验证器和周围的html分组到一个用户控件中,然后在编辑屏幕中使用它:。将此行与原始的以及将要设置的所有属性进行比较。巨大的收益! – 2011-12-16 22:26:04

0

我会尽可能使用VS IDE工具箱提供的控件。如果环境提供的东西没有完成我想做的事情,我只会推出我自己的控制。

1

用户控件是很好的为子程序/功能/方法擅长同样的原因:代码(和标记)再利用。

就像子程序一样,如果控件做了诸如修改全局状态,做大量数据库或其他不常用的离线调用,引入不可避免的同步阻塞等,控件可能会成为问题。它们也可以添加如果它们从未被重复使用,那么它就是不必要的复杂层。