无法访问后面的代码中的控件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,我可以像这样访问TextBox
: idForm.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 { ...
谢谢我以后;)