11

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

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

对于可重用、小型和专用控件,我们使用服务器控件(继承自 WebControl 类),效果很好。

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

4

4 回答 4

17

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

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

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

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

于 2008-11-12T09:46:52.173 回答
6

如果使用得当,用户控件可以提高维护性和可重用性,而且创建起来通常比服务器控件要快。

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

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

于 2008-11-12T09:49:58.737 回答
2

我仍然会使用用户控件,主要是因为您可以通过这种方式更轻松地将内容与设计分离,这在您更改应用程序的设计时最终会有很大帮助。

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

于 2008-11-12T09:38:56.307 回答
2

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

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

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

于 2008-11-12T09:48:51.453 回答