我有一个我正在使用的Web应用程序(ASP.NET2.0 with C#,使用VS2005)。一切都很好,突然间我得到了错误:
Error 1 The name 'Label1' does not exist in the current context
和另外43个其他类型。
这只发生在1页。就好像代码隐藏不能识别控件一样。另一件有趣的事情是,intellisense没有拿起任何控件..
我试图清理解决方案文件,删除obj文件,从项目中排除文件然后重新添加它们,关闭VS并重新启动它,甚至重新启动计算机,但这些都没有用。
答案 0 :(得分:114)
我知道这是一个老问题,但我遇到了类似的问题,并希望发布我的解决方案以防其他人受益。我在学习使用时遇到了问题:
我正在尝试创建一个支持AJAX的页面(如果您不熟悉,请查看有关使用ScriptManager对象的教程)。我试图通过C#代码访问页面中的HTML元素,我收到一条错误,指出HTML ID值的标识符“在当前上下文中不存在。”
要解决这个问题,我必须做以下事情:
<强> 1。在服务器上运行
要在C#代码中将HTML元素作为变量访问,必须在aspx文件的HTML元素标记中放置以下值:
runat="server"
Visual Studio IDE中工具箱中的某些对象在添加到页面时不会自动包含此值。
<强> 2。重新生成自动生成的C#文件:
现在该元素应该可以在C#代码文件中访问。
答案 1 :(得分:41)
检查文件名后面的代码和@Page指令的Inherits属性,确保它们都匹配。
答案 2 :(得分:33)
排除引用相同代码隐藏文件的任何其他页面,例如您复制并粘贴的旧页面。
答案 3 :(得分:13)
我遇到了同样的问题。事实证明,我的项目中有“MyPage.aspx”和“MyPage.aspx的副本”。
答案 4 :(得分:3)
此外,请确保您没有意外尝试继承或定义与其他文件相同(部分)类的文件。请注意,这些文件似乎与实际出现错误的文件无关!
答案 5 :(得分:1)
我遇到了同样的错误,除了它是一个WPF错误。我正在重新安排项目,并按照以下方式定义控件:
<local:CustomControl Name="Custom" />
在我的代码后面我尝试使用Custom.Blah,但是我收到了错误:
The name 'Custom' does not exist in the current context
我的诀窍是将我在Xaml中的控制权改为:
<local:CustomControl x:Name="Custom" />
希望这有助于那里的人!
答案 6 :(得分:1)
错过runat="server"
时,通常会发生此错误。
答案 7 :(得分:1)
我通过备份当前文件(所以我仍然有我的代码),删除当前的aspx(和子页面),创建一个新文件,并将备份文件的内容复制到新文件中来修复我的项目文件。
答案 8 :(得分:1)
我在使用数据上下文进行更改后得到了同样的错误。但我遇到了一些我不熟悉的事情。我习惯手动发布我的文件。通常,当我这样做时,发布文件夹中不会出现App_Code文件夹。我开始使用VS 12发布,它直接在您的协助下发布到Web服务器。然后我得到关于预编译应用程序的错误。然后我删除它工作的app_code文件夹。但后来它给了我你得到的数据上下文错误。所以我只是删除了所有文件并再次运行发布而没有文件限制(每个文件夹和文件都将被发布)然后它就像一个魅力。
答案 9 :(得分:1)
我有同样的问题,我的问题是两个属性之间没有空格“
AutoGenerateColumns="False"DataKeyNames="ProductID"
而不是
AutoGenerateColumns="False" DataKeyNames="ProductID"
答案 10 :(得分:0)
在我的情况下,我不得不搜寻417个“找不到控件名”错误以查找实际错误:我已替换了DLL,但未更新web.config中的版本号。解决该问题并成功构建,此后3分钟,所有其他错误均已解决。
答案 11 :(得分:0)
1)检查&lt;%@ Page CodeFile =“filename.aspx.cs”中的CodeFile属性“%&gt;在“filename.aspx”页面中,您的代码隐藏文件名和此属性名称应该相同。
2)您可能会错过代码
中的runat =“server”答案 12 :(得分:0)
就我而言,当我创建Web表单时,它被命名为WebForm1.aspx和各自的名称(WebForm1)。信,我把它重命名为别的东西。我几乎在所有地方手动重命名,但设计器文件中的一个地方仍然显示为“WebForm1&#39;”。
我也改变了这个错误。
答案 13 :(得分:0)
我遇到了同样的问题。显然,您不应该在BLL中调用与.aspx / .aspx.cs文件之一相同的类。我认为它们不会在同一范围内等等,但它与Visual Studio的内部工作方式相差甚远。我有点惊讶,如果要产生那种类型的错误,没有什么可以阻止你做这件事。无论如何,只需删除.aspx / .aspx.cs文件并重建您的项目。然后用另一个名字把它们带回来。如果您不想重新输入代码,可以将代码复制/粘贴到另一个编辑器中。
答案 14 :(得分:0)
我有同样的错误消息。我的代码没有错误并且工作正常,然后我决定返回并重命名我的一个按钮,突然它给了我一个编译错误,伴随着那个蓝色波浪形下划线说控制在当前上下文中不存在...
事实证明Visual Studio很愚蠢,因为问题与我的aspx.cs类备份文件有关。我删除了那些,错误就消失了。
答案 15 :(得分:0)
从数据列表转换后,使用Repeater进行调整时遇到了类似的问题。
问题是我在删除不需要的属性时意外地联合了2个属性。
<asp:Repeater runat="server" ID="ClientsRP"DataSourceID="ClientsDS">
.
.
.
</asp:Repeater>
这阻止了在设计文件中生成转发器。
答案 16 :(得分:0)
我遇到了同样的问题,因为我想从visual studio 2010项目中重新生成aspx文件,所以控件有clientidmode =&#34; Static&#34;属性。当它被删除它解决了。
答案 17 :(得分:0)
上面提供的解决方案选项#2适用于Windows窗体应用程序,而不适用于web aspx应用程序。我在Web应用程序中遇到了类似的错误,我通过删除一个文件来解决这个问题,我使用相同名称的用户控件,这个aspx文件实际上是一个备份文件,并且在过程中没有被引用,但它仍然导致错误,因为在备份文件上注册的用户控件的名称在进程流中引用的aspx文件中的名称完全相同。所以我删除了备份文件并构建了解决方案,构建成功。
希望这对类似场景中的某人有所帮助。
Vijaya Laxmi。