簡體   English   中英

無法訪問后面的代碼中的控件ID

[英]Can't access control ID in code behind

我的aspx頁面中有以下代碼:

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

這在我的代碼背后:

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";

我找到了一個簡單的解決方案。

只需打開設計器文件並添加與UI控件對應的行。

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

myButton是你控制的Id

我遇到了同樣的問題,首先我試圖找出我的designer.cs文件出了什么問題。 但在我意識到我的WebForm標記之后,我使用了Default webform中的復制/粘貼。 所以問題是,像Protector一樣,請確保檢查@Page的繼承屬性:

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

我知道問題已經解決,但是當我遇到類似的問題時,當我將WebAplication從c#轉換為VB時 - 我通過添加Namespace X / End Namespace來解決這個問題

我今天遇到了同樣的問題,在我的情況下解決方案是:

  • 轉到: C:\\Users\\lenovo\\AppData\\Local\\Temp\\Temporary ASP.NET Files\\
  • 刪除Temporary ASP.NET Files夾。

我遇到了問題,我注意到Designer.cs文件被排除在我的項目之外。
試着再次尋找他們的項目。
祝好運

我曾經遇到過這個問題幾次。 有時它在設計器中的類名和后面的代碼不匹配。 其他時候它的命名空間不匹配。 其他時候,設計器頁面不會生成成員變量。

正如mdresser所提到的,很好地重新生成設計器文件可能會解決問題。 只需確保首先保存aspx頁面。

已經很久了。 Buuuut今天我遇到了同樣的問題,所以似乎從來沒有為時已晚。 對我來說,它發生了,因為TextBox在一個未命名的形式。 然后我為表單設置了一個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個網頁表單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進行驗證,您將看到類名也被更改。 它會像:

    public partial class test1
    {
     ...

改變成

    public partial class test2
    {
    ... 

謝謝我以后;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM