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

4

我在我的asp.net 3.5应用程序中有一个主页面,其中包含一些控件和jquery内容。我试图在代码后台访问这些控件,但是出现以下错误:

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

为什么在代码后端无法访问?

你在使用哪个项目,是Web应用程序还是网站? - Govind Malviya
请发布您的表单设计,以便我们了解您的问题。 - Muhammad Akhtar
4个回答

9
当您创建一个代码后台文件时,ASP.NET也会自动生成一个设计师文件(就在它旁边)。在那个设计师文件中,所有控件都被初始化和加载。有时候(原因不明),当您创建一个新的控件时,它不能重新初始化设计师文件,这样您就无法在代码后台文件中访问该控件。
尝试以下步骤: 1. 删除设计师文件(右键单击 > 删除) 2. 右键单击aspx文件 > 转换为Web应用程序
现在应该可以正常工作了。

我删除了temp5.aspx页面旁边的设计文件并转换为Web应用程序,但仍然出现相同的错误。 - naveed
@Govind 我看到设计文件是空的。不确定为什么? - naveed
手动声明控件并不是个好主意。每当你在aspx页面中插入一个新的控件时,设计师就会重新生成,你所做的更改会丢失。绝不要手动操作设计师。你需要向我们展示你的aspx文件,因为某些原因它没有正确地链接到设计师/后台代码文件。 - neebz
我之前也遇到了同样的问题,但我解决了它,从那时起我再也没有在那个页面上遇到过任何问题... - Govind Malviya
好吧,我猜你也复制了以“<%Page..”开头的前两行,这样就会破坏它们与设计师/代码后台文件的链接。你能展示一下aspx文件中的顶部标头吗? - neebz
显示剩余2条评论

2

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

this.Page.FindControl("DrpStates");

@naveed 你的意思是错误代码直接在 .aspx 文件中,而出错的代码在 .aspx.cs 文件中吗? - Shadow The Spring Wizard

0

原因:- 当我们创建一个代码后置文件时,ASP.NET也会自动生成一个设计师文件。在那个设计师文件中,所有的控件都被初始化和加载。有时候当我们创建一个新的控件时,它无法重新初始化设计师文件,这样你就无法在代码后置文件中访问该控件。

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

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

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

步骤2:只需为每个缺失的组件重复复制并粘贴以下行:"global::System.Web.UI.WebControls."+你缺失的组件的类名+空格+缺失组件的ID。

步骤3:保存文件,神奇地消除所有组件错误。


0

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

如果你打开 aspx 文件并在设计视图和 HTML 视图之间切换,它会提示 VS 检查控件并将任何缺失的控件添加到设计文件中。

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接