visual que puede protección proteccion nivel inaccesible este esta error declarado debido bc30451 accesible asp.net

asp.net - que - inaccesible debido a su nivel de proteccion



''txtName'' no está declarado. Puede ser inaccesible debido a su nivel de protección (13)

Después de colocar un cuadro de texto en mi página cuando lo compilo, obtengo el error anterior:

''txtName'' no está declarado. Puede ser inaccesible debido a su nivel de protección.

Esto sucede cuando intento leer el valor del cuadro de texto en la página de código siguiente.

No estoy seguro de lo que está causando esto ... ¿alguna idea?

En el archivo aspx tengo:

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="signup.aspx.vb" Inherits="signup" %>

En el archivo codebehind aspx.vb tengo:

Imports System.Data.SqlClient Partial Class signup Inherits System.Web.UI.Page Protected Sub btnSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSubmit.Click


¿Está el cuadro de texto directamente en la página? ¿También qué tipo de proyecto es ese? ¿Es una aplicación web o sitio web abierto desde el sistema de archivos? Si se trata de una aplicación web, es posible que el diseñador no haya actualizado el archivo YourPage.aspx.designer.cs. Compruebe ese archivo para asegurarse de que tiene una definición para txtName algo como:

protected global::System.Web.UI.WebControls.TextBox txtName;

Si no está allí, elimine el archivo .design.cs, haga clic derecho en la página y elija "Convertir a aplicación web. Esto recreará el archivo .design.cs correctamente.


Esto es lo que sucedió en mi caso.

-He declarado la variable detrás del código.

Protected Friend sMessage As String = ""

-Entonces el aspx: <% = sMessage%>

Aparece este caso (visual studio 2015 - asp webform project).

Entonces trato de:

solución limpia

-Reconstruir

Entonces el problema se ha ido

Si la solución limpia y la reconstrucción no funciona

try to clean the obj directory

Si la variable es componente asp

asegúrese de que runat = "server" en el archivo aspx


He recibido este error cuando la clase en el código detrás no especifica Public . Prueba esto:

Partial Public Class signup <-------------Make sure the Public keyword is there Inherits System.Web.UI.Page ... End Class


He tenido ese problema antes. No estoy seguro que lo causo. Pero al eliminar el cuadro de texto ofensivo y agregarlo nuevamente, se corrigió.


La forma en que se ordenan las clases es que la clase generada de su página se hereda de su clase de código: no son parciales, y no es al revés. Esto significa que su clase de código de código no tiene conocimiento de los controles que ha colocado en la página. Si desea acceder a una propiedad que declara en la propia página, debe declararla primero en la clase de código siguiente:

protected TextBox txtName;

A continuación, puede acceder a este miembro en el archivo de código siguiente. Esto se conectará correctamente para que coincida con su control en la página.


Obtuve este problema al eliminar el atributo runat = "server" de un div, aunque no estaba accediendo al div en el lado del servidor. El problema radicaba en el hecho de que en el lado del cliente intentaba acceder al ClientID del div como este $ (''# <% = divMultipleDaysOptions.ClientID%>'').


Ok, tengo esto resuelto ahora. Fue porque me había cambiado el nombre de una copia del archivo .aspx y todavía estaba usando el código de las versiones más recientes detrás del archivo.

El código detrás del archivo estaba buscando txtName.text pero en la versión anterior del archivo .aspx ¡txtName no existía!

He excluido la versión anterior de la página del proyecto y parece que se ejecuta bien ahora.

Gracias a todos por su ayuda.


Otro escenario posible es si el nombre de la clase en el archivo Page.aspx.vb difiere del nombre de la clase en el archivo Page.aspx.designer.vb. Estos deben ser idénticos.


Puede que esto falte en la declaración del cuadro de texto:

runat="server"


Recibí un error similar pero el escenario era diferente. Escenario: He agregado una página existente a mi solución en una carpeta, así que tuve que cambiar los valores de algunas propiedades ( Herencias ) en la etiqueta de página del archivo html. Cuando cambié la estructura de carpetas en la propiedad Herencias , cometí un error y eso causó este error. Cuando la estructura de la carpeta sea diferente, el código detrás del archivo no podrá acceder al control en el archivo .aspx. Entonces, amigos, cuando reciban este tipo de error, vean el valor de la propiedad Heredar (es decir, la estructura de la carpeta es correcta).


Tuve el mismo problema cuando cambié mi sitio web asp.net de 3.5 a 4.0.

Para resolver el problema, recreé todo el sitio web en 4.0 página por página, asegurándome de que todas las páginas tengan los mismos nombres. Copié el contenido de la página para cada página sin incluir la línea superior que comienza con <%@ del sitio web 3.5 al sitio web 4.0.

Copié todo el código en la clase de la página en el código de atrás para cada página del 3.5 al sitio web 4.0.


Tuve un problema similar después de agregar controles a un conjunto web escrito originalmente en VS 2008 .Net 3.5 a VS 2010 .Net 4 Después de agregar controles, obtuve el mismo error. Cuando miré el archivo .designer.vb para la página, los controles agregados no estaban allí. El problema se resolvió simplemente agregando los controles al final del archivo como: Protected WithEvents lblApprove As Global.System.Web.UI.WebControls.Label


Tuve una causa diferente para el mismo error exacto y es similar a lo que encontró el OP pero no del todo. My page.aspx.designer.vb la sincronización y tuvo un error. Uno de mis controles se definió dos veces (creo que porque copié / pegué un control existente sin editar la ID antes de pegar). Una vez que borré la segunda declaración, pude construir y los errores desaparecieron. Curiosamente, VS 2010 SP1 no enumeró ESE error junto con los demás como resultado de la falta de creación de esa página. Espero que esto ayude a alguien más.