ASP.Net自定义控件与用户控件:这两者是否相同

时间:2009-03-23 13:30:40

标签: asp.net user-controls

如果它们不同,我们应该在什么情况下决定使用这两种方法?

另外,ascx优于aspx的优势是什么?

3 个答案:

答案 0 :(得分:9)

用户控件是一种自定义控件,可为您提供可视化设计器。当您希望在同一网站内使用可重复使用的控件时,它们非常适合使用。 (可以创建和打包用户控件作为单独的程序集,但这超出了这个问题的范围,我知道已经问过SO)。

自定义控件通常用于引用Web控件或复合控件,它是Web控件的专用形式。这些控件没有设计器,通常在您的Web上的单独项目中实现,允许它们在许多站点中重复使用。

现在你的第二个问题,ASCX和ASPX是两回事。 ASCX是用户控件的扩展,其中ASPX是ASP.Net页面。您不能单独使用ASCX,它必须放在ASPX或Master页面上。

我喜欢使用用户控件的一种方法是我有一个非常复杂的页面,其中有7个选项卡,其中5个有网格,其中三个是网格。那么我能做的是为选项卡的内容创建一个单独的用户控件,这现在显着减少了我需要的代码(因为除了数据之外三个网格是相同的)。

此外,它允许多个工作在页面的各个部分,它可以帮助我保持一切,因为我降低了页面的复杂性。您不使用用户控件而不是页面,而是将它们与页面结合使用。

修改

你不使用ascx而不是aspx。你使用ascx来补充。例如,在我的网站上,每个页面都有相同的页脚,但我不希望每个页面都来自单个母版页。我可以创建我的页脚作为acsx控件并将其放在我的每个母版页中。

另一个例子,我有一个表单,允许用户输入三个不同的日期范围。 (我们还有其他形式)。因此,我将逻辑设置为启用日历按钮,并在单击时打开文本框,在用户控件中打开日历。然后,我可以在所有aspx页面中重用该用户控件。

答案 1 :(得分:5)

自定义控件是完全由代码构建的控件。专业人员可以将它们放在libreries中,在工具箱中添加一个图标以及其他精细控制。

用户控件更容易实现,通常是一种封装内容以简化其他页面的方法,或者当您需要在多个页面中使用相同的标记时。

控制优于常规aspx页面的优点是你只需要做一些标记(而不是整个页面)

答案 2 :(得分:3)

用户控件/复合控件

由其他ASP.Net或自定义控件组成的用户控件。它们通常很直接,可以很快创建。它们通常不会在项目中共享,但有一些tricks可以允许您执行此操作。

自定义控件

自定义控件是通过创建从HTML输出到设计时支持的所有内容来实现UI的控件。自定义控件需要更长的时间。您必须使用Web.UI.Control或从子控件继承(例如,文本框)。自定义控件被编译为二进制格式,以便更容易地分发它们。由于它们是编译的,因此可以从visual studio中的工具箱中引用它们。

在aspx页面中使用控件 有两个主要优点。封装逻辑和可重用性。