Asp.net aspx.designer.cs它是如何工作的?

Asp.net aspx.designer.cs它是如何工作的?,asp.net,visual-studio,Asp.net,Visual Studio,我是一个真正的初学者,所以我的问题可能看起来很可笑。。但是,我想知道.aspx.designer.cs文件是如何工作的。。 这是我第一次使用包含每个页面的.aspx.designer.cs文件的解决方案。所以我理解它是.aspx中用于代码隐藏的控件声明 以下是我的问题: 为什么有时候解决方案没有.aspx.designer.cs文件?(文件是隐藏的还是不存在?) 我经常遇到这个文件的问题,当我在.aspx代码中添加一些控件时,它们不会自动重新创建控件声明,我做错了什么?.aspx.designe

我是一个真正的初学者,所以我的问题可能看起来很可笑。。但是,我想知道.aspx.designer.cs文件是如何工作的。。 这是我第一次使用包含每个页面的.aspx.designer.cs文件的解决方案。所以我理解它是.aspx中用于代码隐藏的控件声明

以下是我的问题:

为什么有时候解决方案没有.aspx.designer.cs文件?(文件是隐藏的还是不存在?)


我经常遇到这个文件的问题,当我在.aspx代码中添加一些控件时,它们不会自动重新创建控件声明,我做错了什么?
.aspx.designer.xx
文件是ASP.NET webforms代码隐藏文件和.aspx标记文件的桥梁。此处表示了aspx标记页上存在的任何服务器控件。最重要的是服务器控件的名称和类型

这在一定程度上允许VisualStudio在设计时创建的服务器控件的代码隐藏页面中为用户提供IntelliSense

工作方式:从设计器中添加/删除服务器控件时,Visual Studio将在.designer文件中生成或保持同步受保护的
成员

  protected global::System.Web.UI.WebControls.DropDownList DropDownList1;
请注意.designer文件创建了一个
分部类
。这提供了到代码隐藏文件的链接。这就是Intellisense如何在.aspx和后面的代码之间获得钩子


您可以重新生成设计器文件:

Visual Studio有两种创建网站的方法:网站项目和Web应用程序项目。(好的,好的,如果你加上MVC,三个)

只有Web应用程序项目具有designer.cs文件。 网站项目没有它们


Web应用程序项目类型是在Visual Studio 2003中添加的。

正如p.campbell指出的,.designer.cs文件将.aspx文件链接到其.aspx.cs代码隐藏文件。如果没有.designer.cs文件,.aspx.cs CodeBehind文件中的每个.aspx页面控件都将返回错误“当前上下文中不存在”。.designer.cs中的链接是基于aspx文件中@Page指令的“Inherits”属性以及.aspx.cs CodeBehind文件的命名空间和类完成的。“Inherits”属性的最后一段必须与CodeBehind文件和.designer.cs文件中定义的类相匹配,之前的段必须与.designer.cs和CodeBehind文件的命名空间相匹配

例如: myfile.aspx

<%@ Page Language="C#" 
    AutoEventWireup="true" 
    CodeBehind="myfile.aspx.cs" 
    Inherits="my.namespace.dot.classname" %>
注意:CodeBehind文件类必须从Page类或其派生类继承

myfile.designer.aspx.cs

namespace my.namespace.dot {
    public partial class classname { ... }
}
注意:.designer.cs类不关心继承,只关心类名与CodeBehind和.aspx文件匹配

您可以像这样重新生成丢失的.designer文件(w3cgek.com“”):

  • 在名为“myfile.aspx.designer.cs”的.aspx和.aspx.cs文件所在的目录中创建一个新的空白文件,其中“myfile”是要链接的.aspx和.aspx.cs文件的名称
  • 将带有空类的命名空间添加到新文件中,并确保其名称与正在链接的.aspx和.aspx.cs文件中指定的命名空间和类匹配
  • 保存.designer.cs文件,对.aspx文件进行任何更改(例如,添加空间),然后保存.aspx文件
  • Visual Studio应使用链接.aspx和CodeBehind文件所需的所有代码自动填充.designer.cs文件。“当前上下文中不存在”错误现在应该消失了


    编辑:我添加了.designer.cs说明,因为最初由p.campbell发布的链接已失效。

    感谢您的回复,但是否可以手动要求重新生成页面的设计器文件?@ban:当然,下面是如何重新生成设计器文件:@p.campbell您链接的网站不再可用,但它被存档了:这对我来说就像一个符咒!感谢您提供详细的
    .designer.cs
    说明。
    namespace my.namespace.dot {
        public partial class classname { ... }
    }