我还记得在 2003 年的 8 月坐在 Microsoft 公司的一个房间内倾听 Scott Guthrie 和其他人(包括我的同事 Rob Howard,他也是专栏作家)介绍 ASP.NET 2.0 的大量新功能。他们演示了一个又一个功能,这些功能令我们非常吃惊,因为它们极大地简化了 Web 开发,而且是以可插入和可扩展的方式实现的,因此在开发过程中能够以任何所需级别进行更改。
后续测试版本中进行了大量更改,多数是以修改、错误修复和控件附加的形式进行的。但是,有一个功能(代码隐藏模型)自从第一个预览版以来已经进行了大量更改,这主要是为了响应客户的反馈。现在即将发布之时,我想利用这个机会描述一下这个新的代码隐藏模型、它的基本原理,以及 Web 开发人员将如何使用它。我也会介绍该模型的一些潜在的副作用以及如何在设计中解决它们。请注意,ASP.NET 2.0 运行时完全支持 1.x 模型,因此针对 1.x 编写的应用程序可以在无需修改的情况下直接运行。
Class for ASPX file generated by ASP.NET namespace ASP { public class default_aspx : MsdnMag.Default { ... } } Sibling partial class generated by ASP.NET namespace MsdnMag { public partial class Default : IRequiresSessionState { protected TextBox _nameTextBox; protected Button _enterButton; protected Label _messageLabel; private HtmlForm form1; ... } }
Codebehind partial class that you write namespace MsdnMag { public partial class Default : Page { void _enterButton_Click(object sender, EventArgs e) { _messageLabel.Text = "Hello there " + _nameTextBox.Text + "!"; } } } 请注意,该部分类模型仅当在 @ Page 指令中使用 CodeFile 关键字时使用。如果使用不带 CodeFile(或者带有 src 属性)的 Inherits 关键字,ASP.NET 会使用 1.x 代码隐藏类型并简单地将类设置为 .aspx 文件的唯一基类。此外,如果您根本没有代码隐藏,则类生成与它在 1.x 中的操作将完全相同。由于 ASP.NET 2.0 向后与 1.x 兼容,因此现在有大量代码隐藏选项供您使用。