Pregunta

Tengo el siguiente código en mi página ASPX:

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

Y esto en mi código detrás:

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

Por alguna razón, el IntelliSense recoge la identificación de "mybutton" en el código detrás, pero cuando lo compila dice

¡No puede construir porque no lo reconoce!

Mi página es una página ASPX predeterminada que usa una página maestra, el botón está dentro de un control de contenido y todo está configurado para ejecutarse en el servidor correctamente, la página se ejecuta y se muestra bien, excepto para este problema de resolución de botones.

¿Algunas ideas?

¿Fue útil?

Solución

Suena como su archivo de diseñador (pagename.designer.cs) se ha vuelto un poco desordenado. Intentaría eliminar el botón de su página y agregarlo nuevamente.

Otros consejos

Si el botón está dentro de un contenedor de nombres como un repetidor, no podrá usarlo así. En cambio, debes hacer algo como esto:

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

He encontrado el mismo problema, primero estaba tratando de imaginar qué estaba mal con mi archivo diseñador.cs. Pero después de darme cuenta de que para mi marcado de forma web estaba usando una copia/pegar desde la forma web predeterminada. Entonces, el problema era, como el Protector, uno dijo que asegúrese de verificar la propiedad de heredar de @page:

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

Encontré una solución simple para este caso.

Simplemente abra el archivo de diseñador y agregue una línea que corresponda a su control de UI.

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

Dónde mybutton es Id de tu control.

Me enfrenté al problema y noté que Designer.cs Los archivos fueron excluidos de mi proyecto.
Intente buscarlos en su proyecto nuevamente.
buena suerte

Sé que ese problema se resuelve, pero cuando tuve un problema similar, cuando tengo la webaplicación de conversión de C# a VB, lo resolví agregando espacio de nombres X / End Namespace

Tuve el mismo problema hoy y en mi caso la solución fue:

  • Ir: C:\Users\lenovo\AppData\Local\Temp\Temporary ASP.NET Files\
  • Borrar el Temporary ASP.NET Files carpeta.

Me he encontrado con este problema varias veces. A veces se clasifica en el diseñador y el código detrás de no coincidir. Otras veces es que el espacio de nombres no coincide. Otras veces, la página del diseñador no obtiene la variable de miembro.

Como mencionó Mdresser, la regeneración del archivo de diseñador puede cuidar el problema. Solo asegúrese de guardar primero la página ASPX.

Asegúrese de no tener archivos que intenten accidentalmente heredar o definir la misma clase (parcial). ¡Estos archivos pueden estar completamente relacionados con el que apareció realmente el error!

Ha sido un largo tiempo. Buuuut, hoy me enfrentaba a este mismo problema, por lo que parece que nunca es demasiado tarde. Para mi estaba sucediendo porque el TextBox estaba dentro de una forma no nombrada. Luego establecí una identificación en el formulario y pude acceder al TextBox como esto: idForm.idTextBox.ToString(). Supongo que va a suceder igual con un button.

El problema es que puede tener múltiples archivos ASPX con CodeFile en los puntos de la Directiva de página al mismo archivo CodeBehind. Espera que exista el mismo control en todo el archivo ASPX vinculado al mismo código detrás y, por lo tanto, lanzando un error de compilación.

Verifique el espacio de nombres en los tres archivos. A veces hay una discrepancia entre el nombre del espacio de nombres en el archivo diseñador.cs y los otros dos archivos. Asegúrese de verificar ese nombre de espacio de nombre en los tres archivos

Simplemente cambie la propiedad de heredar en la página de la página

    <% Page inherit = "Project_Name.otherform" 

Cambiarlo a

    <% Page inherit = "Project_Name.YourForm"

Y verá en form2.aspx.desginer.cs El nombre de la clase también se cambia y correge.

Dejame explicar: Supongamos que tiene 2 formularios web test1.aspx y test2.aspx. Copió alguna parte de código de test1.aspx a test2.aspx, su archivo test2.aspx usará la etiqueta de página <% como:

    <% Page inherit = "Project_Name.test1"

que se suponía que era como:

    <% Page inherit = "Project_Name.test2"

Debido a lo cual su nombre de clase test2.aspx.designer.cs se cambiará automáticamente al mismo que test1.aspx.designer.cs, ya que es un archivo generado por el sistema y no podrá usar sus ID de control.

Después de corregir su propiedad de heredar, guarde y abra test2.aspx.designer.cs para verificar y verá que el nombre de la clase también se cambia. Será como:

    public partial class test1
    {
     ...

Cambiado en

    public partial class test2
    {
    ... 

Gracias más tarde;)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top