23

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

 <asp:Button runat="server" ID="myButton" Text="hello" />

这在我后面的代码中:

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

出于某种原因,智能感知在后面的代码中获取了“myButton”ID,但是当它编译时它说

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

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

有任何想法吗?

4

13 回答 13

31

听起来您的设计器文件 (PageName.designer.cs) 有点混乱。我会尝试从您的页面中删除该按钮并再次添加它。

于 2009-08-22T19:28:59.010 回答
11

如果按钮位于中继器之类的命名容器中,您将无法像那样使用它。相反,您需要执行以下操作:

Button myButton = (Button)Container.FindControl("myButton");
myButton.Text = "bye";
于 2009-08-22T19:39:14.810 回答
3

我遇到了同样的问题,首先我试图找出我的 Designer.cs 文件有什么问题。但是在我意识到对于我的 WebForm 标记后,我使用的是来自 Default webform 的复制/粘贴。所以问题是,就像保护者所说的,一定要检查@Page的继承属性:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="InputValidation._Default" %>
于 2011-05-19T18:01:28.240 回答
3

我为这种情况找到了一个简单的解决方案。

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

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

myButtonId控制。

于 2015-04-02T18:14:32.683 回答
2

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

于 2013-09-25T09:59:41.287 回答
2

我遇到了这个问题,我注意到Designer.cs文件已从我的项目中排除。
尝试再次将它们包含到您的项目中。
祝你好运

于 2011-03-12T00:01:15.783 回答
2

我今天遇到了同样的问题,就我而言,解决方案是:

  • 去:C:\Users\lenovo\AppData\Local\Temp\Temporary ASP.NET Files\
  • 删除Temporary ASP.NET Files文件夹。
于 2017-08-19T21:23:10.247 回答
1

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

于 2011-04-27T08:16:58.290 回答
1

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

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

于 2009-08-22T19:39:23.403 回答
1

已经很久了。Buuuut我今天也面临同样的问题,所以似乎永远不会太晚。对我来说,它正在发生,因为它TextBox在一个未命名的表单内。然后我为表单设置了一个 id,我可以TextBox像这样访问:idForm.idTextBox.ToString()。我想它会发生同样的情况button

于 2015-12-23T00:14:38.983 回答
1

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

于 2016-05-27T13:53:50.007 回答
1

只需更改页面标签下的继承属性

    <% 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 标签:

    <% Page inherit = "Project_Name.test1"

这应该是:

    <% Page inherit = "Project_Name.test2"

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

更正继承属性后,保存并打开 test2.aspx.designer.cs 进行验证,您会看到类名也发生了变化。它会像:

    public partial class test1
    {
     ...

改变成

    public partial class test2
    {
    ... 

稍后谢谢我;)

于 2018-04-22T06:23:51.540 回答
0

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

于 2017-11-12T04:41:36.660 回答