2

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

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

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

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

这些主要是未声明的“变量”。

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

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

pgLoginView.EnableViewState = True

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

lblFrogs.Text = "sdfgsd"

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

任何与此问题相关的帮助或想法将不胜感激。我束手无策 - 这是一个短暂的旅程。

4

4 回答 4

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

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

如果那不是问题,那么您确定 Visual Studio 还没有决定重命名任何控件吗?

于 2009-09-16T16:00:30.617 回答
0

我终于找到了 Profile 对象的问题所在。

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

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

于 2009-09-17T11:28:51.107 回答
0

这个页面的编译肯定有一些东西发疯了。

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

受保护的 ProfileCommon Profile { get { return ((ProfileCommon)(Context.Profile)); }}

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

于 2009-09-17T08:12:33.070 回答
0

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

看来根本原因可能仍然是个谜。

于 2009-09-17T07:39:20.317 回答