当前上下文中不存在名称“ control name”

我正在开发一个 Web 应用程序(ASP.NET2.0和 C # ,使用 VS2005)。一切都很正常,突然我发现了一个错误:

Error 1 The name 'Label1' does not exist in the current context

和其他43个类似的,每次我在页面的代码后面使用一个控件。

这只发生在1页。就好像代码背后没有识别控制。另一个有趣的事情是,智能感知也没有接收到任何控件。.

我试过清理解决方案文件,删除 obj 文件,从项目中排除这些文件,然后重新添加它们,关闭 VS 并重新启动它,甚至重新启动我的计算机,但这些都没有用。

249615 次浏览

检查@Page 指令中的文件名和继承属性后面的代码,确保它们都匹配。

排除引用相同代码隐藏文件的任何其他页面,例如复制和粘贴的旧页面。

我知道这是一个老问题,但我有一个类似的问题,并希望张贴我的解决方案,以防它可以有利于其他人。我在学习使用时遇到了这个问题:

  • ASP.NET 3.5
  • C #
  • VS2008

我正在尝试创建一个支持 AJAX 的页面(如果您不熟悉,可以参考一个关于使用 ScriptManager 对象的教程)。我尝试通过 C # 代码访问页面中的 HTML 元素,但是我得到一个错误,说明 HTML ID 值的标识符“在当前上下文中不存在”

为了解决这个问题,我必须做以下几件事:

1. 在服务器上运行

要在 C # 代码中将 HTML 元素作为变量访问,必须在 aspx 文件的 HTML 元素标记中放置以下值:

runat="server"

VisualStudioIDE 中的“工具箱”中的某些对象在添加到页时不会自动包含此值。

2. 重新生成自动生成的 C # 文件:

  • 在解决方案资源管理器中,aspx 文件下应该有两个文件: * 。Aspx.cs 和 * 。Aspx.designer.cs.设计器文件是自动生成的。
  • 删除现有 * 。Aspx.designer.cs 档案。确保只删除 设计师文件。不要删除另一个,因为它包含页面的 C # 代码。
  • 右键单击父 aspx 文件。在弹出菜单中,选择 转换为 Web 应用程序

现在元素应该可以在 C # 代码文件中访问了。

另外,请确保没有文件意外地尝试继承或定义与其他文件相同的(分部)类。注意,这些文件看起来可能与实际出现错误的文件无关!

我也有同样的问题。原来我的项目中同时有“ MyPage.aspx”和“ Copy of MyPage.aspx”。

我遇到了同样的错误,除了它是一个 WPF 错误。我重新安排项目,并有一个控制定义如下:

<local:CustomControl Name="Custom" />

在我的代码背后,我尝试使用 Custom。等等,但我得到了错误:

The name 'Custom' does not exist in the current context

对我来说真正有用的是把我在 Xaml 的控制权变成了这样:

<local:CustomControl x:Name="Custom" />

希望这能帮到别人!

上面提供的解决方案选项 # 2适用于 Windows 窗体应用程序,而不适用于 web aspx 应用程序。我在 web 应用程序中也遇到了类似的错误,我解决这个问题的方法是删除一个文件,其中我有一个同名的用户控件,这个 aspx 文件实际上是一个备份文件,并没有在进程中的任何地方被引用,但它仍然导致了错误,因为在备份文件中注册的用户控件的名称与在进程流中引用的 aspx 文件的名称完全相同。所以我删除了备份文件并构建了解决方案,构建成功了。

希望这对类似情况下的人有所帮助。

Vijaya Laxmi.

我也遇到了同样的问题,因为我试图从一个 Visual Studio 2010项目中重新生成 aspx 文件,这样控件就具有 clientidmode = “ Static”属性。当这个被删除时,它就被解决了。

我在使用转换器从 DataList 进行转换后的调整时也遇到了类似的问题。

问题是在删除一个不需要的属性时,我不小心联合了2个属性。

<asp:Repeater runat="server" ID="ClientsRP"DataSourceID="ClientsDS">
.
.
.
</asp:Repeater>

这就防止了中继器在设计文件中的生成。

我收到了同样的错误消息。我的代码没有错误,工作正常,然后我决定回去重命名我的一个按钮,突然它给我一个编译错误,伴随着蓝色的弯弯曲曲的下划线说,控件不存在于当前上下文中..。

事实证明 Visual Studio 是愚蠢的,因为这个问题与我在 aspx.cs 类中创建的备份文件有关。我删除了它们,错误也就消失了。

在对数据上下文进行更改之后,我得到了相同的错误。但我遇到了一些我不熟悉的东西。我习惯于手动发布文件。通常,当我这样做时,没有 App _ Code 文件夹出现在发布文件夹中。但我开始使用 VS12发布,它直接发布与您的协助,以网络服务器。然后我得到了关于预编译应用程序的错误。然后我删除它工作的 app _ code 文件夹。但是它给我的数据上下文错误,你正在得到。所以我只是删除了所有的文件,再次运行发布没有文件限制(每个文件夹和文件将被发布) ,然后它像一个魅力。

我也遇到了同样的问题。显然,您不应该在 BLL 中调用与。Aspx/.Aspx.cs 文件。我认为他们不会在同一个范围内,等等,但它干扰了 Visual Studio 的内部工作太多。我有点惊讶,如果它会产生那种类型的错误,那么没有什么东西可以阻止您这样做。不管怎样,删掉。Aspx/.Cs 文件并重新生成项目。然后用另一个名字把他们带回来。如果不想重新键入代码,可以将代码复制/粘贴到另一个编辑器中。

在我的例子中,当我创建 web 表单时,它被命名为 WebForm1.aspx 和各自的名称(WebForm1)。字母,我把它改成了别的名字。我在几乎所有的地方手动重命名,但在设计器文件中的一个地方仍然显示为“ WebForm1”。

我也修改了那个,并消除了这个错误。

我也有同样的问题,我的问题是两个属性之间没有空格

AutoGenerateColumns="False"DataKeyNames="ProductID"

而不是

AutoGenerateColumns="False" DataKeyNames="ProductID"

我在我的项目中通过备份当前文件(所以我仍然有我的代码) ,删除当前的 aspx (和子页面) ,创建一个新的,并将备份文件的内容复制到新的文件中来修复这个问题。

这个错误经常发生时,你错过了 runat="server"

1)检查“ filename.aspx”页面中的“ CodeFile”属性,文件名后面的代码和这个属性名应该是相同的。

2)您可能会错过代码中的 runat = “ server”

在我的例子中,我必须查找417个“ control name not found”错误才能找到一个实际错误: 我替换了一个 DLL,但没有更新 web.config 中的版本号。修正了这个问题,并成功构建,3分钟后,所有其他错误已经解决了自己。