无法访问后面的代码中的控件ID

我的aspx页面中有以下代码:

 

这在我的代码背后:

 protected void Page_Load(object sender, EventArgs e) { myButton.Text = "bye"; } 

由于某种原因,intellisense在后面的代码中获取“myButton”id,但是当它编译时它说

它无法构建,因为它无法识别它!

我的页面是一个使用母版页的默认aspx页面,该按钮位于内容控件内,并且所有页面都设置为在服务器上正确运行,页面运行并且显示正常,除了此按钮分辨率问题!

有任何想法吗?

听起来像你的设计师文件(PageName.designer.cs)有点搞砸了。 我尝试删除页面上的按钮并再次添加。

如果按钮位于像转发器这样的命名容器内,您将无法像这样使用它。 相反,你需要做这样的事情:

 Button myButton = (Button)Container.FindControl("myButton"); myButton.Text = "bye"; 

我遇到了同样的问题,首先我试图找出我的designer.cs文件出了什么问题。 但在我意识到我的WebForm标记之后,我使用了Default webform中的复制/粘贴。 所以问题是,像Protector一样,请确保检查@Page的inheritance属性:

 <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="InputValidation._Default" %> 

我找到了一个简单的解决方案。

只需打开设计器文件并添加与UI控件对应的行。

 protected global::System.Web.UI.WebControls.Button myButton; 

myButton是你控制的Id

我遇到了问题,我注意到Designer.cs文件被排除在我的项目之外。
试着再次寻找他们的项目。
祝好运

我知道问题已经解决了,但是当我遇到类似的问题时,当我将WebAplication从c#转换为VB时 – 我通过添加Namespace X / End Namespace来解决这个问题

我今天遇到了同样的问题,在我的情况下解决方案是:

  • 转到: C:\Users\lenovo\AppData\Local\Temp\Temporary ASP.NET Files\
  • 删除Temporary ASP.NET Files夹。

我曾经遇到过这个问题几次。 有时它在设计器中的类名和后面的代码不匹配。 其他时候它的命名空间不匹配。 其他时候,设计器页面不会生成成员变量。

正如mdresser所提到的,很好地重新生成设计器文件可能会解决问题。 只需确保首先保存aspx页面。

确保没有意外尝试inheritance或定义相同(部分)类的文件。 这些文件可能与错误实际出现的位置完全无关!

已经很久了。 Buuuut今天我遇到了同样的问题,所以似乎从来没有为时已晚。 对我来说,它发生了,因为TextBox在一个未命名的forms。 然后我为表单设置一个id,我可以像这样访问TextBoxidForm.idTextBox.ToString() 。 我想用button会发生同样的事情。

问题是你可能有多个aspx文件,其中页面指令中的代码文件指向相同的代码隐藏文件。 它期望在相同代码后面的所有aspx文件中存在相同的控件,从而引发编译错误。

检查所有三个文件中的命名空间 。 有时,designer.cs文件中的命名空间名称与其他两个文件之间存在差异。 请务必检查所有三个文件中的名称空间名称是否匹配

只需更改页面标记下的inherit属性即可

  <% Page inherit = "Project_Name.otherform" 

改为

  <% Page inherit = "Project_Name.YourForm" 

您将在form2.aspx.desginer.cs中看到类名也被更改和更正。

让我来解释一下:假设您有2个Web表单test1.aspx和test2.aspx。 您将一些代码从test1.aspx复制到test2.aspx,您的test2.aspx文件将使用<%page tag作为:

  <% Page inherit = "Project_Name.test1" 

应该是这样的:

  <% Page inherit = "Project_Name.test2" 

因为它是一个系统生成的文件,你的test2.aspx.designer.cs类名将自动更改为与test1.aspx.designer.cs相同,你将无法使用你的控件ID。

在更正了inherit属性后,保存并打开test2.aspx.designer.cs进行validation,您将看到类名也被更改。 它会像:

  public partial class test1 { ... 

改变成

  public partial class test2 { ... 

谢谢我以后;)