0

使用 Visual Studio 2010,我将一个表单添加到一个 ASP.Net 页面,该页面已经是我项目的一部分。称它为 myPage.aspx。我实际上是从另一个应用程序的工作页面复制和粘贴表单。所以首先我将 .aspx 代码粘贴到 myPage.aspx 文件中,然后将 C# 代码粘贴到 myPage.aspx.cs 文件中。我没有复制 myPage.aspx 文件中的 page 指令,也没有复制 myPage.aspx.cs 文件中的任何类声明代码。我只是将一个表格粘贴到 myPage.aspx 的正文中,并将一些处理代码提交到 myPage.aspx.cs。

当我尝试构建网站时,每个控件都出现错误,提示“当前上下文中不存在名称'whateverControl'”。这对我来说毫无意义,因为 Intellisense 正在工作,发现控件很好。我仔细检查了 Page 的 CodeFile 和 Inherits 属性,它们都是正确的。

此外,如果我使用“构建页面”命令,页面构建成功。只有当我使用“构建网站”时,我才会得到一长串“不存在”错误。“重建网站”没有帮助。我什至关闭了 Visual Studio 并重新打开它,它没有任何区别。我最终发现了问题,所以我在这里回答我自己的问题。

4

1 回答 1

0

原来 myPage.aspx 和 myPage.aspx.cs 完全没问题。问题是,在以前的某个时间,其他人将我正在处理的 .aspx 页面(不是 .aspx.cs)复制到了另外两个 .aspx 页面,并且他们在执行此操作时还复制了 CodeFile 和 Inherits 属性。因此,这两个页面都具有与我正在处理的页面完全相同的 CodeFile 和 Inherits 设置。这意味着三个页面在其 Page 指令中具有完全相同的设置

CodeFile="myPage.aspx.cs" Inherits="myPage"

显然这是编译器允许的,只要 .aspx.cs 文件中没有代码在寻找仅存在于其中一个页面中的控件,它就可以工作。

我从另外两个复制的页面中删除了这些属性,然后所有内容都成功编译。

于 2013-01-15T20:33:10.140 回答