为什么aspx页面的部分类背后的代码?
5 回答
我建议您参考这个MSDN 页面(ASP.NET 页面类概述)。
页面编译时,ASP.NET 会根据 .aspx 文件生成分部类;这个类是代码隐藏类文件的部分类。生成的部分类文件包含页面控件的声明。此部分类使您的代码隐藏文件可以用作完整类的一部分,而无需您显式声明控件。
请参阅此图表:
替代文字 http://img30.imageshack.us/img30/7692/msdnchart.gif
这样,您就有一个包含您的逻辑的类和一个包含设计器内容的类。在编译时,它作为一个整体生成。
因为类的其他部分(设计师的东西)对开发人员是隐藏的
例如,而不是这个
public MyBasePage : System.Web.UI.Page
{
...
protected System.Web.UI.Label lblName;
protected void Page_Load(object sender, EventArgs e)
{
}
...
}
ASP.NET 在不同的物理文件中创建这些声明,留下这个
public partial class MyBasePage : System.Web.UI.Page
{
...
protected void Page_Load(object sender, EventArgs e)
{
}
...
}
更多信息:
Partial 声明允许您在其他文件中编写代码 - 只需将其放在相同的命名空间中并将类命名为相同,它们将被视为在同一个文件中。它非常适合向生成的文件添加功能。我最常使用它向我的 LinqToSql 对象添加函数/属性。
部分文件的另一个原因是处理某些类定义由工具生成(并且可能在某些时候重新生成)而类的其余部分由您实现的情况。
在这种情况下,不使用分部类会导致您的代码被覆盖,或者生成过程难以完成其工作(如果它可以完成的话)。
有了部分类,生成的代码可以很容易地重新生成,而无需接触您的代码。
另一个很好的例子是在使用 LINQ-to-SQL 的 DataContext 类时:真正聪明的东西生成到一组部分类文件中,您可以在另一个部分类中提供实现 - 用于验证等,安全重生不会破坏你的工作的知识。
Aspx.cs 使用 PARTIAL 类,因为在此类中访问的控件(例如 TextBox、GridView)是在 .Aspx 文件(即物理上的另一个文件)中声明的,因此一个类包含控件声明(.aspx 文件)和另一个基于声明的控件的业务逻辑在 .aspx 文件上。当他们被编译时被认为是一个整体。