2011-05-01 114 views
4

我在我的asp.net 3.5应用程序中有一个masterpage,我有一些控件和jQuery的东西。我试图访问代码隐藏的控件,它说:该名称在当前上下文中不存在

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

为什么它不能在代码隐藏中访问?

+0

哪个项目使用Web应用程序或网站? – 2011-05-01 10:45:09

+0

请发表您的表单设计,以便我们能够理解您的问题。 – 2011-05-01 11:01:14

回答

9

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

尝试这样做>

  1. 删除设计文件(点击右键>删除)
  2. 右键单击aspx文件>转换为Web应用程序

现在应该工作

+0

我删除了我的页面temp5.aspx旁边的设计器文件,并转换为Web应用程序,但仍然是相同的错误 – naveed 2011-05-01 10:52:24

+1

那么你需要显示你的aspx标记 – neebz 2011-05-01 10:53:10

+0

我删除了设计器文件,我没有任何设计器文件。 aspx页面非常大 – naveed 2011-05-01 11:06:58

2

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

this.Page.FindControl("DrpStates"); 
+0

不,它是页面的一部分 – naveed 2011-05-01 10:53:04

+0

@naveed你的意思是它直接在'.aspx'中,失败的代码在'.aspx.cs'代码中? – 2011-05-01 10:54:22

0

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

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

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

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

0

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

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

第一步:打开的文件yourfile.aspx.designer.cs

  • 你会发现喜欢的东西 “保护全球:: System.Web.UI.WebControls.Label Label2的;”
  • 这些都是它们由您生成的顺序中的初始化组件。

第二步:刚才反复说没有 通过后面的代码承认每个缺少的组件复制并粘贴以下行:组件的“全球:: System.Web.UI.WebControls” +级,你缺少+单个空格+缺失组件的ID。

第3步:保存文件,并瞧所有的组件错误消失神奇。

相关问题