2008-11-12 70 views
11

我们的团队正在开发一个相当大的ASP.NET Web项目,该项目最初在ASP.NET 1.0中开始,并已多次移植到.NET的所有新版本中。ASP.NET ascx与aspx - 你重用用户控件吗?

我们广泛使用了用户控件(ascx)。但回想起来,我怀疑这是一个很好的决定。这些控件中的一小部分通过不同的页面被重用(可重用)。这个应用程序只增加了一层复杂性,使一些事情变得更加复杂。

对于可重复使用的小型专用控件,我们使用服务器控件(继承自WebControl类),这非常有效。

所以我的问题:开始一个新的项目,是否可以摆脱ascx并实现所有页面本身(aspx)?也许除非你做了很多动态加载(我们没有)用户控件?你有什么经验,你会建议什么?

回答

16

我们有一些广泛使用ASCX控件的项目,还有一些项目没有。根据我的经验,您必须根据具体情况来决定。

我最喜欢的两个理由使用ASCX控件:

  1. 你执行了一块UI功能,这将出现在许多不同的页面(或在同一页面上多次)。
  2. 您想要封装一些复杂的功能以使其与页面的其余部分不同,从而使您的代码更易于阅读和更易维护。

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

+1

如果你真的在实现一些经常出现/封装的UI,那么为什么不使用* master pages *来完成? – 2015-01-31 11:38:22

2

我仍然会使用usercontrols,主要是因为您可以更轻松地从设计中取消关联内容,当您更改应用程序的设计时,这最终将有很大帮助。

它还使得在页面上移动控件比在不同位置剪切/粘贴代码更容易一些。

2

它纯粹归结为正在设计的Web应用程序的类型。在工作中,我们的一个应用程序是非常易于配置的,因此可以在一个页面上工作(default.aspx),并根据其为登录用户配置的方式加载控件。

然而,另一方面,如果你正在编写一个需要通过SEO访问的网站,并且必须易于浏览,那么在一个aspx页面中实现每个视图是一个好方法。通过将其设置为VS中的启动页面,您可以直接访问它(假设没有安全权限/逻辑阻碍),可以在开发过程中轻松直接访问每个页面。

另一种选择是使用ASP.net MVC;相互依赖的视图与可重复使用的用户控件也被扔进混合:-)

6

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

您提到在您之前的项目中,很少用户控件被重用。这似乎更多地涉及到糟糕的规划,而不是用户控制本身的内在缺陷。

我想一个好的经验法则是看看你的设计,看看你是否一遍又一遍地使用同一组控件,在这种情况下,它使用用户控件是有意义的。

+0

谢谢你的回答。您可以将其称为可怜计划,但这是一个事实,在我们的SPECIFIC Web应用程序中,用户控件非常专业,在大多数情况下不需要重复使用。也许还有其他的情况(例如门户),用户控制更有意义。 – splattne 2008-11-12 10:10:58