Domanda

Ho il seguente codice nella mia pagina aspx:

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

e questo nel mio codice dietro:

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

Per qualche motivo l'intellisense raccoglie l'id "myButton" nel codice dietro, ma quando si compila dice

  

che non può costruire, perché non lo riconosce!

La mia pagina è una pagina aspx predefinita che utilizza una pagina master, il pulsante è all'interno di un controllo dei contenuti e tutto è impostato per funzionare correttamente sul server, la pagina viene eseguito e display benissimo tranne questo problema di risoluzione tasto!

Tutte le idee?

È stato utile?

Soluzione

suona come il vostro file di progettazione (PageName.designer.cs) ha ottenuto un po 'incasinato. Mi piacerebbe provare l'eliminazione del tasto dalla pagina e aggiungendo di nuovo.

Altri suggerimenti

Se il pulsante è all'interno di un contenitore di denominazione come un ripetitore non sarà in grado di utilizzare in quel modo. Invece, è necessario fare qualcosa di simile a questo:

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

che ho incontrato lo stesso problema, prima stavo cercando di capire che cosa era sbagliato con il mio file designer.cs. Ma dopo ho capito che per il mio WebForm markup Io sto usando un copia / incolla dal modulo web predefinito. Quindi il problema è stato, come Protector uno ha detto essere sicuri di controllare la proprietà eredita di @Page:

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

Ho trovato una soluzione semplice per questo caso.

Basta aprire il file di progettazione e aggiungere una riga che corrisponde al controllo dell'interfaccia utente.

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

Dove myButton è Id del vostro controllo.

Ho affrontato il problema e ho notato che i file Designer.cs sono stati esclusi dal mio progetto.
provate a cercare per loro sono al vostro progetto di nuovo.
buona fortuna

so che problema è risolto, ma quando ho avuto un problema simile, quando ho convertire applicazioni Web da C # a VB - Ho risolto questo con l'aggiunta dello spazio dei nomi X / End Namespace

Ho avuto lo stesso problema di oggi e nel mio caso la soluzione è stata:

  • Vai a: C:\Users\lenovo\AppData\Local\Temp\Temporary ASP.NET Files\
  • Eliminare la cartella Temporary ASP.NET Files.

Ho eseguito in questo problema un paio di volte. A volte classnames nella finestra di progettazione e codice dietro non corrispondono. Altre volte è lo spazio dei nomi che non corrisponde. Altre volte, la pagina del designer non ottiene la variabile del membro generato.

Come mdresser accennato, rigenerare il file di progettazione molto bene può prendere cura del problema. Basta fare in modo che si salva la pagina aspx prima.

Assicurati di avere nessun file che tentano accidentalmente di ereditare o definire la stessa classe (parziale). Questi file possono essere completamente estranei a cui in realtà è apparso l'errore!

E 'stato un lungo periodo di tempo. Buuuut stavo affrontando lo stesso problema di oggi, a quanto pare mai che sia troppo tardi. Per me stava accadendo la causa TextBox era all'interno di un modulo nonnamed. Poi ho impostato un id alla forma e ho potuto acess il TextBox in questo modo: idForm.idTextBox.ToString(). Credo che sia succederà lo stesso con un button.

Il problema è che si potrebbe avere più file aspx con codefile nella direttiva di pagina indica stesso file codebehind. Si aspetta lo stesso controllo a esiste in tutti i file aspx legata al medesimo codice dietro e quindi gettando errore di compilazione.

Controlla lo spazio dei nomi in tutti e tre i file . A volte c'è una discrepanza tra il nome dello spazio dei nomi nel file designer.cs e gli altri due file. Assicuratevi di controllare quella partita nome spazio dei nomi in tutti e tre i file

Basta cambiare la proprietà eredita sotto tag pagina

    <% Page inherit = "Project_Name.otherform" 

cambiarlo in

    <% Page inherit = "Project_Name.YourForm"

E vedrete nel form2.aspx.desginer.cs il nome della classe è anche cambiato e corretto.

Mi spiego meglio: Diciamo che si dispone di 2 moduli web test1.aspx e test2.aspx. Hai copiato qualche pezzo di codice da test1.aspx a test2.aspx, il file test2.aspx utilizzerà <% tag page come:

    <% Page inherit = "Project_Name.test1"

, che doveva essere come:

    <% Page inherit = "Project_Name.test2"

a causa del quale il vostro nome test2.aspx.designer.cs classe sarà automaticamente impostata uguale a test1.aspx.designer.cs in quanto è un sistema di file generato e si sarà in grado di utilizzare gli ID di controllo.

Dopo aver corretto la vostra proprietà ereditare, salvare e test2.aspx.designer.cs aperte per verificare e vedrete in che il nome della classe è anche cambiato. sarà come:

    public partial class test1
    {
     ...

Cambiato per

    public partial class test2
    {
    ... 

Grazie Me Later;)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top