ASP.NET的ascx和aspx有什么区别?你会重复使用用户控件吗?

15

我们的团队正在开发一个相当大的ASP.NET Web项目,最初是在ASP.NET 1.0中开始,随后被转移到所有新版本的.NET。

我们广泛使用用户控件(ascx)。但回想起来,我怀疑这是否是一个好决定。只有极少量的这些控件通过不同的页面重复使用。这只是为应用程序增加了一层复杂性,使一些东西变得更加复杂。

对于可重用、小而专业化的控件,我们使用从WebControl类继承的服务器控件,效果很好。

因此我的问题是:开始一个新项目,是放弃ascx并在页面本身(aspx)中实现所有内容可以吗?也许除非您需要大量动态加载用户控件(我们不需要)?您有什么经验和建议?

4个回答

21

我们有一些项目广泛使用ASCX控件,而其他项目则没有。根据我的经验,您必须具体问题具体分析。

我个人喜欢使用ASCX控件的两个原因是:

  1. 您正在实现一个UI功能块,它将出现在许多不同的页面上(或在同一页上多次出现)。
  2. 您想要封装一些复杂的功能,使其与页面其余部分区别开来,从而使您的代码更易于阅读和维护。

ASCX控件可能很有用,但您确实需要确保仅在有充分理由时使用它们 - 否则 - 正如您所说,您可能会向代码库中添加不必要的复杂性。


2
如果您真的正在实现一些经常出现/封装的UI,为什么不使用主页面呢?这样您就完成了。 - user586399

7

正确使用用户控件可以提高维护性和可重用性,而且通常比服务器控件更快创建。

你之前项目中提到很少有用户控件被重复使用。这似乎更与规划不佳有关,而不是用户控件本身的固有缺陷。

我想一个好的经验法则是查看设计并查看是否一遍又一遍地使用相同的控件,如果是这样,使用用户控件确实是有意义的。


1
谢谢您的回答。您可以称其为糟糕的计划,但在我们特定的网络应用程序中,用户控件非常专业化,在大多数情况下不需要被重复使用,这是事实。也许在其他情况下(例如门户),用户控件会更有意义。 - splattne

3
我仍然会使用用户控件,主要是因为这样可以更轻松地将内容与设计分离,当您更改应用程序的设计时,这将极大地帮助您。它还使得在页面上移动控件比必须到处剪切/粘贴代码要容易一些。

3
这纯粹取决于正在设计的Web应用程序的类型。在工作中,我们的一个应用程序非常可配置,因此在一个页面上运行(default.aspx),并根据已登录用户的配置加载控件。
然而,在另一方面,如果您编写一个需要通过SEO访问并且必须易于导航的网站,则在每个aspx页面中实现每个视图是一个不错的选择。这样可以使开发期间访问每个页面变得容易和直观,因为您可以将其设置为VS中的启动页面并直接访问它(假设没有安全权限/逻辑阻碍)。
还有另一个选项:使用ASP.net MVC; 将互相依存的视图与可重用的用户控件混合使用 :-)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接