设计视图呈现疑难解答

更新:2007 年 11 月

当您试图在 Web 窗体设计器中打开无法在该设计器中正确呈现的文件时,会引发几个常见问题。有的文件最初是在 Visual Studio 外作为代码隐藏 Web 窗体页创建的,在处理这些文件时,出现设计视图呈现问题的频率最高。不过,这些问题可能在各种不同的情况下发生。通常情况下,该问题与 Web 窗体页中 @ Page 指令的属性有关,或与 Web 窗体用户控件中 @ Control 指令的属性有关。

Aa992034.alert_note(zh-cn,VS.90).gif说明:

对于扩展名与您所处理文件的扩展名匹配的文件来说,Web 窗体设计器是用于处理它们的注册编辑器。如果不想使用 Web 窗体设计器处理文件,请更改该文件的扩展名。或者,还可以在“解决方案资源管理器”中右击该文件,选择“打开方式”,然后选择不同的编辑器。

有关 Src 属性的问题

如果 @ Page@ Control 指令中具有 Src 属性,则可能会发生错误。在 Web 窗体设计器中不支持此属性。修复此错误的方法为:

  • 移除 Src 属性。在该属性所在的位置添加:

    • 引用项目中代码隐藏文件的名称的 CodeBehind 属性。

    • 引用代码隐藏文件所表示的类名的 Inherits 属性。(此类反过来应从 System.Web.UI.Page 类继承。)

    Aa992034.alert_note(zh-cn,VS.90).gif说明:

    如果尚没有代码隐藏文件和类,可以让 Web 窗体设计器生成一个。移除 Src 属性之后,将 Inherits 属性设置为空字符串 (""),将 CodeBehind 属性设置为要生成的代码隐藏文件的名称(formname.aspx.vb 或 formname.aspx.cs)。保存文件并将其关闭。在“解决方案资源管理器”中,右击 .aspx 文件并选择“查看代码”。在保存代码隐藏文件时,设计器将生成相应的类文件。再次打开该文件。执行在代码隐藏文件中生成代码的所有动作(例如添加控件或双击某个控件以创建事件处理程序),然后保存该文件。设计器将相应设置 Web 窗体页的 Inherits 属性。

另外,也可以移除 Src、CodeBehind 和 Inherits 属性,并将该文件视作单文件 Web 窗体页。有关更多信息,请参见在 Visual Studio .NET 中处理单文件 Web 窗体页

有关 CodeBehind 属性的问题

@ Page@ Control 指令中的 CodeBehind 属性引用包含该页的类的文件名。例如,如果在 Visual Studio 中创建一个名为 WebForm1 的 Web 窗体页,则 CodeBehind 属性将指向 WebForm1.aspx.vb 或 WebForm1.aspx.cs。

CodeBehind 属性只在设计时使用,它通知 Web 窗体设计器在何处查找页类,以便设计器可以创建其实例以供您使用。

与 CodeBehind 属性有关的问题可能包括:

  • 引用的文件不可用。该文件不存在或者具有不同的名称。

  • 引用文件中的类从某个基类继承,而在项目中没有引用该基类。通常,Web 窗体页的类继承自 System.Web.UI.Page 类,但如果将用户控件或 Web 窗体页用于其他平台,如移动设备,则基类可能不同。

引用文件中的类从尚未编译的项目中的基类继承。

有关 Inherits 属性的问题

@ Page@ Control 指令中的 Inherits 属性引用该页在运行时要继承的类(而非文件)的名称。有关 Web 窗体页的继承模型的更多信息,请参见 Web 窗体代码模型

只有在不存在 CodeBehind 属性的情况下,才会引发 Inherits 属性问题。例如,在单文件 Web 窗体页中可能会出现这种情况。只有在没有 CodeBehind 属性的情况下,设计器才会在设计时使用 Inherits 属性中引用的类来创建页的实例。

Aa992034.alert_note(zh-cn,VS.90).gif说明:

如果有 CodeBehind 属性,则设计器将忽略 Inherits 属性,即使 Inherits 属性指向不可用的类。在这种情况下,您可以在设计器中处理该页,但该页将不会运行。

与 Inherits 属性有关的最常见的问题是,它指向项目中或引用程序集中不可用的类。

请参见

概念

“设计”视图