【问题标题】:Why are aspx code-behind files declared as partial classes?为什么将 aspx 代码隐藏文件声明为部分类?
【发布时间】:2010-11-22 17:56:41
【问题描述】:

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

【问题讨论】:

  • 你应该编辑你的问题标题。这不是一个愚蠢的问题。
  • “没有愚蠢的问题,只有愚蠢的人”——南方公园的加里森先生。好的,所以这不适用于这里,我只是喜欢那句话。 :D
  • 唯一愚蠢的问题是你不问的问题。

标签: asp.net code-behind partial-classes


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我会向您推荐这个MSDN Page(ASP.NET 页面类概述)。

    当页面被编译时,ASP.NET 生成一个部分类基于 .aspx 文件;这个类是部分的 代码隐藏类文件的类。 生成的部分类文件 包含页面的声明 控制。这个部分类使 您的代码隐藏文件用作 完整课程的一部分 要求您声明控件 明确的。

    请看这张图表:

    alt text http://img30.imageshack.us/img30/7692/msdnchart.gif

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

    【讨论】:

    • 这是“让我们用不应该成为图表的东西制作图表”图表之一。
    • “代码隐藏页面的继承模型比单文件页面的继承模型稍微复杂”该 MSDN 文章中的部分对更好地理解此图表很有帮助
    【解决方案3】:

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

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

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 此外,它还有助于防止所有生成的丑陋代码远离您并意外编辑它。你现在必须更有目的性来编辑它.... :)
      【解决方案5】:

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

      例如,而不是这个

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

      更多信息:

      【讨论】:

      • 您能详细说明一下吗?和winforms设计器文件类似吗?
      • @andrewWinn - 是的,它等同于 winforms 设计器文件 - 在 ASP.NET 1.1 中,所有控件声明都位于代码隐藏的顶部,然后是折叠区域底部沿着“设计器生成,请勿修改”的行评论,其中所有事件都已连接。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-16
      • 2012-04-30
      • 1970-01-01
      相关资源
      最近更新 更多