79

我有一个正在开发的 Web 应用程序(带有 C# 的 ASP.NET2.0,使用 VS2005)。一切正常,突然间我得到了错误:

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

每次我在页面的代码隐藏中使用控件时,还有 43 个其他同类。

这只发生在 1 页。就好像代码隐藏没有识别控件。另一个有趣的事情是智能感知也没有拿起任何控件。

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

4

18 回答 18

119

我知道这是一个老问题,但我有一个类似的问题,想发布我的解决方案,以防它可以使其他人受益。我在学习使用时遇到了问题:

  • ASP.NET 3.5
  • C#
  • VS2008

我试图创建一个启用 AJAX 的页面(如果您不熟悉,请查看有关使用 ScriptManager 对象的教程)。我尝试通过 C# 代码访问页面中的 HTML 元素,但我收到一条错误消息,指出 HTML ID 值的标识符“在当前上下文中不存在”。

为了解决它,我必须执行以下操作:

1.在服务器上运行

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

runat="server"

Visual Studio IDE 工具箱中的某些对象在添加到页面时不会自动包含此值。

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

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

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

于 2009-12-30T17:03:35.730 回答
47

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

于 2009-04-01T17:37:52.193 回答
34

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

于 2009-10-13T14:15:21.450 回答
14

我有同样的问题。事实证明,我的项目中有“MyPage.aspx”和“MyPage.aspx 的副本”。

于 2011-07-12T20:27:52.717 回答
3

此外,请确保您没有意外尝试继承或定义与其他文件相同(部分)类的文件。请注意,这些文件似乎与实际出现错误的文件无关!

于 2011-04-27T08:19:06.557 回答
1

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

<local:CustomControl Name="Custom" /> 

在我后面的代码中,我尝试使用 Custom.Blah,但出现错误:

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

对我来说,诀窍是将我在 Xaml 中的控制更改为:

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

希望这可以帮助那里的人!

于 2012-06-08T15:08:31.280 回答
1

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

于 2013-05-02T13:13:11.100 回答
1

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

AutoGenerateColumns="False"DataKeyNames="ProductID"

代替

AutoGenerateColumns="False" DataKeyNames="ProductID"
于 2014-05-09T18:58:08.413 回答
1

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

于 2016-11-09T14:54:52.127 回答
1

这个错误经常发生在你错过的时候runat="server"

于 2017-05-16T14:05:00.733 回答
0

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

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

维杰亚·拉克西米。

于 2012-10-05T14:38:40.730 回答
0

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

于 2013-01-01T06:00:50.690 回答
0

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

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

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

这阻止了在设计文件中生成中继器。

于 2013-01-03T17:01:10.960 回答
0

我有同样的错误信息。我的代码没有错误并且运行良好,然后我决定返回并重命名我的一个按钮,突然它给了我一个编译错误,伴随着蓝色波浪下划线,说控件在当前上下文中不存在......

原来 Visual Studio 是愚蠢的,因为问题与我为我的 aspx.cs 类制作的备份文件有关。我删除了这些,错误就消失了。

于 2013-04-15T18:55:57.480 回答
0

我遇到了同样的问题。显然,您不应该在 BLL 中调用与 .aspx/.aspx.cs 文件之一同名的类。我认为它们不会在同一个范围内,等等,但它与 Visual Studio 的内部工作混淆了太多。如果它会产生这种类型的错误,我有点惊讶没有什么可以阻止你这样做。无论如何,只需删除 .aspx/.aspx.cs 文件并重建您的项目。然后用另一个名字把他们带回来。如果您不想重新输入所有代码,可以将代码复制/粘贴到另一个编辑器中。

于 2014-03-18T15:08:37.293 回答
0

在我的例子中,当我创建 Web 表单时,它被命名为 WebForm1.aspx 和相应的名称 (WebForm1)。信,我把它改名为别的东西。我几乎在所有地方都手动重命名,但设计器文件中的一个地方仍将其显示为“WebForm1”。

我也改变了它并摆脱了这个错误。

于 2014-04-30T20:16:12.627 回答
0

1) 检查“filename.aspx”页面中<%@Page CodeFile="filename.aspx.cs" %> 中的CodeFile 属性,您的Code behind 文件名和该属性名应该相同。

2)你可能会错过代码中的 runat="server"

于 2018-04-05T11:08:52.063 回答
0

在我的情况下,我必须通过 417“找不到控制名称”错误来查找实际错误:我已经替换了一个 DLL,但没有更新 web.config 中的版本号。修复该问题并成功构建,3 分钟后所有其他错误都自行解决。

于 2020-04-02T16:49:38.933 回答