该名称在当前上下文中不存在

时间:2011-05-01 10:42:17

标签: asp.net

我的asp.net 3.5应用程序中有一个母版页,我有一些控件和jquery的东西。我尝试访问代码隐藏中的控件,并说:

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

为什么在代码隐藏中无法访问它?

4 个答案:

答案 0 :(得分:9)

当您在文件后面创建代码时,ASP.NET还会自动生成一个设计器文件(紧挨着它)。在该设计器文件中,所有控件都被初始化并加载。创建新控件时有时(原因未知),无法重新初始化设计器文件,也无法访问代码隐藏文件中的控件。

尝试这样做>

  1. 删除设计器文件(右键单击>删除)
  2. 右键单击aspx文件>转换为Web应用程序
  3. 现在应该工作

答案 1 :(得分:2)

它可能是母版页或母版页的一部分,请尝试使用FindControl方法:

this.Page.FindControl("DrpStates");

答案 2 :(得分:0)

您的.designer.cs文件可能存在问题。检查您是否有与aspx(或ascx)文件同名的设计器文件。

如果打开aspx文件并在设计视图和html视图之间切换并返回,它将提示VS检查控件并添加设计器文件中缺少的任何文件。

尝试右键单击aspx并选择“转换为Web应用程序”。

您也可以尝试删除.designer.cs文件,然后重新创建一个同名的空文件。

答案 3 :(得分:0)

原因: - 当我们在文件后面创建代码时,ASP.NET也会自动生成一个设计器文件。在该设计器文件中,所有控件都被初始化并加载。有时,当我们创建一个新控件时,它无法重新初始化设计器文件,并且无法访问代码隐藏文件中的控件。

这种情况有一个简单的解决方案。

步骤1:打开yourfile.aspx.designer.cs文件

  • 你会发现像“protected global :: System.Web.UI.WebControls.Label Label2;”这样的东西。
  • 这些是您生成它们的序列中的初始化组件。

步骤2:只需为每个缺少的组件重复复制并粘贴以下行        由后面的代码识别:“global :: System.Web.UI.WebControls。”+你缺少的组件的类+缺少组件的单个空格+ id。

步骤3:保存文件并瞧瞧所有组件错误消失。