我在ASPX页面中有以下代码:

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

这在我的代码背后:

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

由于某种原因,Intellisense在背后的代码中选择了“ mybutton” ID

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

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

有任何想法吗?

有帮助吗?

解决方案

听起来像您的Designer文件(pagename.designer.cs)有点混乱。我将尝试从您的页面上删除按钮并再次添加。

其他提示

如果按钮像中继器一样在命名容器中,您将无法这样使用。相反,您需要做这样的事情:

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

我遇到了同样的问题,首先我试图弄清我的Designer.cs文件出了什么问题。但是,在我意识到我的WebForm标记后,我使用了默认WebForm的复制/粘贴。因此,问题是,就像Protector One所说的那样,请确保您检查@page的继承属性:

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

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

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

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

在哪里 mybuttonId 您的控制。

我面对这个问题,我注意到 Designer.cs 文件被排除在我的项目之外。
尝试再次将它们包含在您的项目中。
祝你好运

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

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

  • 去: C:\Users\lenovo\AppData\Local\Temp\Temporary ASP.NET Files\
  • 删除 Temporary ASP.NET Files 文件夹。

我已经遇到了几次这个问题。有时,它在设计师中的名称和背后的代码不匹配。其他时候,这是名称空间不匹配的。其他时候,设计人员页面不会生成成员变量。

正如Mdresser提到的那样,对设计器文件的再生可能会解决这个问题。只需确保首先保存ASPX页面即可。

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

已经很久了。 buuuut我今天面临着同样的问题,所以看来还为时已晚。对我来说,这是由于 TextBox 在不命名的形式内。然后我为表格设置一个ID,我可以选择 TextBox 像这样: idForm.idTextBox.ToString(). 。我想它会发生同样的事情 button.

问题是,您可能在页面指令中具有多个带有代码文件的ASPX文件到同一CodeBehind文件。它期望在链接到同一代码后面的所有ASPX文件中存在相同的控件,从而丢弃了汇编错误。

检查所有三个文件中的名称空间. 。有时,Designer.cs文件中的名称名称与其他两个文件之间存在差异。确保检查所有三个文件中的名称空间名称匹配

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

    <% 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 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
    {
    ... 

稍后谢谢我;)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top