7

为什么aspx页面的部分类背后的代码?

4

5 回答 5

13

我建议您参考这个MSDN 页面(ASP.NET 页面类概述)。

页面编译时,ASP.NET 会根据 .aspx 文件生成分部类;这个类是代码隐藏类文件的部分类。生成的部分类文件包含页面控件的声明。此部分类使您的代码隐藏文件可以用作完整类的一部分,而无需您显式声明控件。

请参阅此图表:

替代文字 http://img30.imageshack.us/img30/7692/msdnchart.gif

这样,您就有一个包含您的逻辑的类和一个包含设计器内容的类。在编译时,它作为一个整体生成。

于 2009-08-25T18:55:33.117 回答
4

因为类的其他部分(设计师的东西)对开发人员是隐藏的

例如,而不是这个

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)
    {
    }

    ...
}

更多信息:

于 2009-08-25T18:53:14.387 回答
1

Partial 声明允许您在其他文件中编写代码 - 只需将其放在相同的命名空间中并将类命名为相同,它们将被视为在同一个文件中。它非常适合向生成的文件添加功能。我最常使用它向我的 LinqToSql 对象添加函数/属性。

于 2009-08-25T18:56:19.700 回答
1

部分文件的另一个原因是处理某些类定义由工具生成(并且可能在某些时候重新生成)而类的其余部分由您实现的情况。

在这种情况下,不使用分部类会导致您的代码被覆盖,或者生成过程难以完成其工作(如果它可以完成的话)。

有了部分类,生成的代码可以很容易地重新生成,而无需接触您的代码。

另一个很好的例子是在使用 LINQ-to-SQL 的 DataContext 类时:真正聪明的东西生成到一组部分类文件中,您可以在另一个部分类中提供实现 - 用于验证等,安全重生不会破坏你的工作的知识。

于 2009-08-25T19:02:27.097 回答
0

Aspx.cs 使用 PARTIAL 类,因为在此类中访问的控件(例如 TextBox、GridView)是在 .Aspx 文件(即物理上的另一个文件)中声明的,因此一个类包含控件声明(.aspx 文件)和另一个基于声明的控件的业务逻辑在 .aspx 文件上。当他们被编译时被认为是一个整体。

于 2013-07-30T17:20:02.010 回答