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

时间:2010-07-19 20:19:13

标签: asp.net visual-studio

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

以下是我的问题:

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

我经常遇到这些文件的问题,当我在.aspx代码中添加一些时,它们不会自动重新创建控件的声明,我做错了什么?

3 个答案:

答案 0 :(得分:29)

.aspx.designer.xx文件是ASP.NET webforms代码隐藏文件和.aspx标记文件的桥梁。此处表示aspx标记页面上存在的任何服务器控件。最重要的是服务器控件的名称和类型。

这部分允许Visual Studio在设计时创建的服务器控件的代码隐藏页面中为用户提供IntelliSense。

它们的工作原理:当您从设计器添加/删除服务器控件时,Visual Studio将生成或保持同步.designer文件中的protected成员。

  protected global::System.Web.UI.WebControls.DropDownList DropDownList1;

请注意.designer文件会创建partial class。这提供了与代码隐藏文件的链接。这就是Intellisense如何获得.aspx和代码隐藏之间的钩子。

您可以重新生成设计器文件:http://www.undermyhat.org/blog/2009/07/tip-regenerate-aspx-designer-cs-files-when-corrupted/

答案 1 :(得分:18)

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

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

Web应用程序项目类型已添加到Visual Studio 2003中。

答案 2 :(得分:2)

正如p.campbell指出的那样,.designer.cs文件将.aspx文件链接到其.aspx.cs CodeBehind文件。如果没有.designer.cs文件,.aspx.cs CodeBehind文件中的每个.aspx页面控件都将返回错误,"在当前上下文中不存在"。 .designer.cs中的链接是基于"继承" asp文件中@ Page指令的属性以及.aspx.cs CodeBehind文件的名称空间和类。 "继承"的最后一部分属性必须与CodeBehind文件和.designer.cs文件中定义的类匹配,并且前面的段必须与.designer.cs和CodeBehind文件的名称空间匹配。

实施例: myfile.aspx

<%@ Page Language="C#" 
    AutoEventWireup="true" 
    CodeBehind="myfile.aspx.cs" 
    Inherits="my.namespace.dot.classname" %>

myfile.aspx.cs

namespace my.namespace.dot {
    public partial class classname : Page { ... }
}

注意:CodeBehind文件类必须继承自Page类或其衍生物。

myfile.designer.aspx.cs

namespace my.namespace.dot {
    public partial class classname { ... }
}

注意:.designer.cs类并不关心继承,只是类名与CodeBehind和.aspx文件匹配。

您可以重新生成丢失的.designer文件(w3cgeek.com&#34; Regenerate designer.cs&#34;):

  1. 在与.aspx和.aspx.cs文件相同的目录中创建一个新的空白文件,名为&#34; myfile.aspx.designer.cs&#34;在哪里&#34; myfile&#34;是要链接的.aspx和.aspx.cs文件的名称。
  2. 将具有空类的命名空间添加到新文件中,并确保它们的名称与您要链接的.aspx和.aspx.cs文件中指定的命名空间和类相匹配。
  3. 保存.designer.cs文件,对.aspx文件进行任何更改(例如,添加空格),然后保存.aspx文件。
  4. Visual Studio应自动填充.designer.cs文件,其中包含链接.aspx和CodeBehind文件所需的所有代码。 &#34;在当前上下文中不存在&#34;错误现在应该消失了!

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