母版页上的编译器错误

时间:2009-09-16 15:29:45

标签: asp.net visual-studio-2008 master-pages compiler-errors

是否有人建议将母版页从一个解决方案/应用程序移动到另一个解决方案/应用程序?

我已将现有解决方案的母版页复制到新版本。

原始解决方案构建并运行良好。

在新解决方案中,页面会导致构建错误

这些主要是'变量'未声明。

除了2个非常简单的陈述外,我已经注释掉了该页面的所有服务器代码。

语句1引用原始页面标记中的控件

pgLoginView.EnableViewState = True

语句2引用了为测试目的而新添加的控件

lblFrogs.Text = "sdfgsd"

好像编译器不知道应该从标记生成的类成员。我检查了标记文件'Inherits'属性是否设置正确。 当我在代码编辑器中调用intellisense时,会列出两个对象(lblFrogs和pgLoginView),并在按下'。'后依次列出它们的属性和方法。

非常感谢任何有关此问题的帮助或想法。我的智慧结束了 - 这是一段短暂的旅程。

4 个答案:

答案 0 :(得分:1)

您应该检查为您的母版页生成的设计器代码 - 尽管.aspx / .master页面在运行时用于创建页面上所有控件的实例,在编译时,所有有关控件的信息都存在标记包含在.designer.master文件中的部分类中:

public partial class Site1
{
    /// <summary>
    /// ContentPlaceHolder1 control.
    /// </summary>
    /// <remarks> Auto-generated field.</remarks>
    protected global::System.Web.UI.WebControls.ContentPlaceHolder ContentPlaceHolder1;

    // Etc...
}

如果该页面不包含正确生成的代码,那么我不确定除了玩它之外还有什么建议,或者如果你真的被卡住了自己声明控件 - 我之前遇到过这个问题但我对如何生成设计器代码知之甚少。

如果那不是问题那么你确定视觉工作室还没有决定重命名任何控件吗?

答案 1 :(得分:0)

christian-hayter似乎走在正确的轨道上。我将项目转换为网站项目,问题就消失了。

似乎根本原因可能仍然是个谜。

答案 2 :(得分:0)

对于这个页面的编译,肯定有些疯狂。

我无法引用Profile属性。这article from Dino Esposito 说作为编译过程的一部分,Profile对象被添加到页面中,如下所示:

  

受保护的ProfileCommon个人资料{       得到{           return((ProfileCommon)(Context.Profile));   }}

当我在工作项目中查找 ProfileCommon 的文件时,我从asp.net临时文件中获得了很多结果。在损坏的项目中,任何文件中都不会出现 ProfileCommon

答案 3 :(得分:0)

我终于找到了我的祸患来源。

首先,配置文件功能仅在网站类型项目中可用。但是,由于项目已经转换为网站类型以解决引用页面元素的第一个问题,那么为什么配置文件对象不可用?

答案是转换不会修改页面标记。需要使用“CodeFile”指定后面代码的位置,并且Inherits属性必须删除前导命名空间信息。例如: