使用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可以正常工作,发现控件还不错。我仔细检查了页面的CodeFile和Inherits属性,它们都是正确的。
此外,如果使用“构建页面”命令,则页面构建成功。只有当我使用“构建网站”时,我才获得一长串“不存在”错误。 “重建网站”没有帮助。我什至关闭了Visual Studio并重新打开它,这没有什么区别。我最终找到了问题,所以我在这里回答自己的问题。
最佳答案
事实证明,myPage.aspx和myPage.aspx.cs完全可以。问题是,在以前的某个时间,有人将我正在处理的.aspx页(而不是.aspx.cs)复制到了另外两个.aspx页上,他们这样做时还复制了CodeFile和Inherits属性。因此,这两个页面都具有与我正在处理的页面完全相同的CodeFile和Inherits设置。这意味着三个页面的Page指令中具有这些完全相同的设置:
CodeFile =“myPage.aspx.cs” Inherits =“myPage”
显然,这是编译器所允许的,并且只要.aspx.cs文件中没有代码正在寻找仅存在于页面之一中的控件,它就可以工作。
我从其他两个复制的页面中删除了这些属性,然后一切都成功编译了。
关于asp.net - ASP.Net页面在Visual Studio中使用 “Build Page”构建良好,但使用 “does not exist in the current context”给出 “Build Web Site”错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14346367/