ASP.NET ascx与aspx-是否重用用户控件?

ASP.NET ascx与aspx-是否重用用户控件?,asp.net,user-controls,Asp.net,User Controls,我们的团队正在开发一个相当大的ASP.NET web项目,该项目最初在ASP.NET 1.0中启动,并多次移植到所有新版本的.NET中 我们广泛使用了用户控件(ascx)。但回想起来,我怀疑这是一个好的决定。这些控件中的一小部分是通过不同的页面重用的(可恢复的)。只有这一层复杂性添加到应用程序中,使得某些事情变得更加复杂 对于可重用的、小型的和专门化的控件,我们使用服务器控件(从WebControl类继承而来),这非常有效 所以我的问题是:开始一个新项目,摆脱ascx并实现页面中的所有内容(as

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

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

对于可重用的、小型的和专门化的控件,我们使用服务器控件(从WebControl类继承而来),这非常有效


所以我的问题是:开始一个新项目,摆脱ascx并实现页面中的所有内容(aspx)可以吗?也许除非你对用户控件进行大量的动态加载(我们不这么做)?您的经验是什么?您有什么建议?

我仍然会使用usercontrols,主要是因为您可以更轻松地将内容从设计中分离出来,这最终将在您更改应用程序设计时提供很大帮助


这也使得在页面上移动控件比在任何地方剪切/粘贴代码都要容易一些。

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

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

  • 您正在实现一个UI功能,它将出现在许多不同的页面上(或在同一页面上多次出现)
  • 您希望封装一些复杂的功能,使其与页面的其余部分不同,从而使代码更易于阅读和维护

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

    这完全取决于正在设计的web应用程序的类型。在工作中,我们的一个应用程序是非常可配置的,因此可以在一个页面(default.aspx)上工作,并根据登录用户的配置加载控件

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


    另一种选择是使用ASP.NETMVC;具有可重用用户控件的相互依赖视图也被加入到组合中:-)

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

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


    我想一个很好的经验法则是查看您的设计,看看您是否反复使用同一组控件,在这种情况下,使用用户控件是有意义的。

    谢谢您的回答。您可以称之为糟糕的规划,但事实是,在我们特定的web应用程序中,用户控件非常专业,在大多数情况下不需要重用。也许在其他情况下(例如门户),用户控件更有意义。如果您真的要实现一些经常出现/封装的UI,为什么不改用母版页,您就完成了?