快速业务通道

ASP.NET 2.0中的代码隐藏和编译

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
的成员变量声明。这一直是 1.x 中一个不太稳定的关系,因为如果您无意间修改了一个控件声明,使得它不再与该窗体上所声明控件的 ID 匹配,就会突然停止工作。现在,成员变量以隐式方式声明并始终是正确的。图 3 显示所涉及类集的一个示例。

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 兼容,因此现在有大量代码隐藏选项供您使用。

Visual Studio 2005 将使用任何 Web 窗体新的部分类隐藏模型,而且如果您使用转换向导,它也将很好地转换 Visual Studio .NET 2003 项目以便使用新模型。因为 ASP.NET 2.0 的一些新功能依赖于它的原因,所以如果可能,最好将所有文件转换为新代码隐藏模型(如果使用 Visual Studio,那么转换几乎是唯一的选择,因为 Visual Studio 2005 不会打开未转换的 1.x 项目)。例如,对 Profile 属性包的强类型访问添加到 2.0 中代码隐藏类的同辈部分类中,但是如果您使用 1.x 代码隐藏模型,则该强类型访问器直接添加到 .aspx 生成的类定义中,而且对于代码隐藏类不可用。这也适用于强类型的母版页和以前的页访问。

编译

此时,您可能想知道,为什么 ASP.NET 小组非要使用这个新代码隐藏模型来使用继承。ASP.NET 除了将来自 .aspx 文件的方法呈现为部分类(然后这些类与简化的代码隐藏类合并)之外,还可以轻松生成所有控件变量声明。这就是 Windows 窗体在 .NET Framework 2.0 中的工作方式。设计器生成的所有代码被放置在同辈部分类(然后该类与您的应用程序逻辑合并)中,事件处理程序被放置在窗体驱动的单个类中,从而在无需借助于继承的情况下,在计算机生成的代码和开发人员代码之间创建一个完全的分离。

ASP.NET 2.0 中代码隐藏的原始实现也执行此操作 — 代码隐藏类只是一个与分析的 .aspx 文件类定义合并的部分类。它简单有效,但遗憾的是它不够灵活。该模型的问题在于,预编译的二进制程序集中的代码隐藏文件不再能够与完整的 .aspx 文件一起部署,因为它们现在必须同时编译(使用部分类的一个限制是,一个类的所有部分必须在单个编译中合并,而且类定义无法跨越程序集)。对于许多开发人员而言,该限制是无法接受的,因为他们已经习惯于将二进制代码隐藏程序集与完整的 .aspx 文件一起部署,后者随后会进行适当的更新而不必重新编译。实际上,这就是默认情况下 Visual Studio .NET 2003 中使用的模型,而且在实践中非常流行。

由于重新引入了继承模型并将部分类移到基类中,.aspx 文件现在可以从代码隐藏类中进行独立部署和编译。为此,您需要某种方式在编译或部署过程中生成同辈的部分类,后者包含控件变量声明,因为在过去这一直是针对请求进行的

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号