我们的团队正在开发一个相当大的ASP.NET Web项目,该项目最初是在ASP.NET 1.0中启动的,并且已经多次移植到所有新版本的.NET中.
我们广泛使用了用户控件(ascx).但回想起来,我怀疑这是一个好的决定.这些控件中很小一部分通过不同页面重复使用(可恢复).应用程序中只添加了这一层复杂性,使某些事情变得更加复杂.
对于可重用,小型和专用控件,我们使用服务器控件(继承自WebControl类),这非常有效.
所以我的问题:开始一个新项目,是否可以摆脱ascx并在页面中实现所有(aspx)?也许除非你做了很多用户控件的动态加载(我们没有)?你有什么经历,你会建议什么?
我们有一些项目广泛使用ASCX控件,而其他项目则没有.根据我的经验,你必须根据具体情况来决定.
我最喜欢使用ASCX控件的两个原因是:
您正在实现一个UI功能,它将出现在许多不同的页面上(或在同一页面上多次).
您希望封装一些复杂的功能,以使其与页面的其余部分区分开来,从而使您的代码更易于阅读和更易于维护.
ASCX控件可能很有用,但是你真的需要确保只在有充分理由的时候使用它们 - 否则 - 正如你所说,你可能会在代码库中添加不必要的复杂性.
如果使用得当,用户控件可以提高维护和可重用性,并且创建速度通常比服务器控件更快.
您提到在之前的项目中,很少有用户控件被重用.这似乎与糟糕的计划有关,而不是用户控制本身的固有缺陷.
我想一个好的经验法则是查看你的设计,看看你是否一遍又一遍地使用同一组控件,在这种情况下使用用户控件是有意义的.