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

我有一个我正在使用的Web应用程序(ASP.NET 2.0与C#,使用VS2005)。 一切正常,突然间,我得到的错误:

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

和其他43种types,每次我在页面的代码隐藏中使用了一个控件。

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

我试图清理解决scheme文件,删除obj文件,从项目中排除文件,然后重新添加它们,closuresVS并重新启动它,甚至重新启动我的电脑,但没有一个工作。

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

我知道这是一个古老的问题,但我也有类似的问题,并希望张贴我的解决scheme,以防止其他人受益。 我在学习使用时遇到了这个问题:

  • ASP.NET 3.5
  • C#
  • VS2008

我正在尝试创build一个支持AJAX的页面(如果您不熟悉这个页面,请查看有关使用ScriptManager对象的教程)。 我尝试通过C#代码访问页面中的HTML元素,并且出现错误,指出HTML ID值的标识符“在当前上下文中不存在”。

要解决这个问题,我必须做到以下几点:

1.在服务器上运行

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

 runat="server" 

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

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

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

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

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

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

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

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

 <local:CustomControl Name="Custom" /> 

在我的代码后面我尝试使用Custom.Blah,但我得到了错误:

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

对我来说,诡计是把我在Xaml的控制权改变为:

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

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

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

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

 AutoGenerateColumns="False"DataKeyNames="ProductID" 

代替

 AutoGenerateColumns="False" DataKeyNames="ProductID" 

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

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

希望这有助于类似的情况。

Vijaya Laxmi。

我有同样的问题,因为我正在重新生成从Visual Studio 2010项目的aspx文件,所以控件有clientidmode =“静态”属性。 当这被删除它已经解决了。

从Repeater转换DataList后,我有一个类似的问题。

问题是我在删除一个不需要的时候意外地将两个属性联合起来。

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

这阻止了devise文件中的中继器的生成。

我有相同的错误信息。 我的代码是没有错误,完美的工作,然后我决定回去重命名我的button之一,突然它给了我一个编译错误伴随着蓝色波浪下划线说该控件不存在于当前的情况下…

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

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

在我的情况下,当我创buildWeb窗体时,它被命名为WebForm1.aspx和各自的名称(WebForm1)。 信,我把它改名为别的。 几乎所有的地方我都手动重命名,但devise器文件中的一个地方仍然显示为“WebForm1”。

我也改变了这一点,摆脱了这个错误。

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