ASP.NET ascx与aspx - 你重用用户控件吗?

时间:2008-11-12 09:34:20

标签: asp.net user-controls

我们的团队正在开发一个相当大的ASP.NET Web项目,该项目最初是在ASP.NET 1.0中启动的,并且已经多次移植到所有新版本的.NET中。

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

对于可重用,小型和专用控件,我们使用服务器控件(继承自WebControl类),它运行良好。

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

4 个答案:

答案 0 :(得分:16)

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

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

  1. 您正在实施一项UI功能,该功能将出现在许多不同的页面上(或在同一页面上多次)。
  2. 您想要封装一些复杂的功能,以使其与页面的其余部分区别开来,从而使您的代码更易于阅读和更易于维护。
  3. ASCX控件可能很有用,但您确实需要确保只在有充分理由的情况下使用它们 - 否则 - 正如您所说,您可能会在代码库中添加不必要的复杂性。

答案 1 :(得分:6)

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

您提到在之前的项目中,很少有用户控件被重用。这似乎与糟糕的计划有关,而不是用户控制本身的固有缺陷。

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

答案 2 :(得分:2)

我仍会使用usercontrols,主要是因为你可以更容易地将内容与设计分离,这最终会在你改变应用程序的设计时有所帮助。

它还使得在页面上移动控件比在整个地方剪切/粘贴代码更容易。

答案 3 :(得分:2)

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

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

投入混合的另一个选择是使用ASP.net MVC;具有可重复使用的用户控件的相互依赖的视图也被混合在一起: - )