在我之前的 ASP.NET 开发环境中,有一个近乎普遍的最佳实践:
* NEVER use the native controls!
* Instead, subclass ALL the controls, and ALWAYS use the subclassed version.
为什么?因为这给了你一个钩子......一个编写代码并将其应用于整个应用程序的地方。
例如:假设您决定要在 webforms 应用程序中每个 TextBox 的右侧显示一个问号图标。图标被渲染,悬停在它上面会弹出气泡帮助——如果 TextBox.ToolTip 属性中有文本。
如果您使用的是 MS 提供的 TextBox 控件,您将如何做到这一点?
如果您一直在应用程序中使用 TextBox 的子类版本,那么您可以转到该对象,并添加呈现图标的方法,其中包含您最喜欢的 bubblehelp javascript。
快!您应用程序的所有文本框都会出现小问号图标——或者当您设置它们的工具提示文本时它们会出现。
随着时间的推移,您可以轻松地调整和增强所有文本框,因为它们都有一个可以修改的基类。您添加一个功能,其中工具提示是从资源文件中设置的。接下来,添加一个 ShowOnLeft 属性,该属性在 TextBox 的左侧显示图标。您喜欢 iPhone 密码控件如何显示您键入的最后一个字符,而不是前面的字符吗?使用实现该行为的方法覆盖子类 TextBox 的默认密码行为。
在 ASP.NET 中,我从未遇到过这种做法的倡导者。我刚刚错过了吗?一篇描述两打 ASP.NET 设计模式的文章没有任何相关内容。关于如何对服务器控件进行子类化的帖子描述了特殊用途的一次性操作,例如只接受数字的文本框——但没有一个推荐普遍的“总是使用子类化控件!” 我过去订阅的政策。
在 ASP.NET 中工作时应用这种古老的智慧是否有意义?要始终使用本机服务器控件的子类等效项?
如果不是——为什么不呢?还有其他方法可以剥这只猫的皮吗?一种技术只为您提供一个可以增加给定控件的所有应用程序实例的地方?
我很想听听。我想要我的 TextBoxQMark 控件。:-)
TIA - 霍伊斯特