Подтвердить что ты не робот

'txtName' не объявляется. Он может быть недоступен из-за его уровня защиты

После размещения текстового поля на моей странице при компиляции я получаю следующую ошибку:

'txtName' не объявляется. Он может быть недоступен из-за его уровня защиты.

Это происходит, когда я пытаюсь прочитать значение текстового поля на странице codebehind.

Я не уверен, что вызывает это... любые идеи?

В aspx файле у меня есть:

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

В файле aspx.vb codebehind у меня есть:

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 
4b9b3361

Ответ 1

Хорошо, я решил это сейчас. Это было потому, что я переименовал копию файла .aspx и который по-прежнему использует код новой версии за файлом.

Код за файлом ищет txtName.text, но в старой версии файла .aspx txtName не существует!

Я исключил старую версию страницы из проекта и, похоже, теперь работает нормально.

Спасибо всем за помощь.

Ответ 2

Является ли текстовое поле непосредственно на странице? И что это за проект? Это веб-приложение или веб-сайт, открытый из файловой системы? Если это веб-приложение, разработчику, возможно, не удалось обновить файл YourPage.aspx.designer.cs. Проверьте этот файл, чтобы убедиться, что у вас есть определение для txtName:

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

Если его нет, удалите файл .design.cs, щелкните правой кнопкой мыши на странице и выберите "Преобразовать в веб-приложение". Это правильно воссоздает файл .design.cs.

Ответ 3

Возможно, этого не хватает в объявлении текстового поля:

runat="server"

Ответ 4

У меня была другая причина для той же самой ошибки, и она похожа на то, что обнаружил OP, но не совсем. My page.aspx.designer.vb вышел из синхронизации и имел ошибку. Один из моих элементов управления был определен дважды (я думаю, потому что я копировал/вставлял существующий элемент управления без редактирования идентификатора перед вставкой). Как только я удалю 2-ю декларацию, которую я смогу построить, и ошибки исчезли. Интересно, что VS 2010 SP1 не перечислил эту ошибку вместе с остальными в результате отсутствия этого построения страницы. Надеюсь, это поможет кому-то еще.

Ответ 5

Порядок упорядочения классов заключается в том, что класс, созданный вашей страницей, наследуется от вашего класса codebehind - они не являются частичными, и это не так. Это означает, что ваш класс codebehind не знает о элементах управления, которые вы разместили на странице. Если вы хотите получить доступ к свойству, которое вы объявляете на самой странице, вам нужно сначала объявить его в классе codebehind:

protected TextBox txtName;

Затем вы можете получить доступ к этому члену в файле codebehind. Это будет правильно подключено, чтобы соответствовать вашему контролю на странице.

Ответ 6

У меня была эта проблема раньше. Не знаете, что вызвало это. Но удалив текстовое поле с нарушением и добавив его снова, он исправил его.

Ответ 7

Я получил эту ошибку, когда класс в коде позади не указывает Public. Попробуйте следующее:

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

Ответ 8

Вот что произошло в моем случае.

-Я объявил переменную за кодом

Protected Friend sMessage As String = ""

-Тогда aspx: <% = sMessage% >

этот случай появляется (проект visual studio 2015 - asp webform)

Затем я пытаюсь:

-чистое решение

-Rebuild

Тогда проблема исчезла

Если чистое решение и перестройка не работают

try to clean the obj directory

Если переменная является asp-компонентой

убедитесь, что runat = "server" в файле aspx

Ответ 9

У меня была такая же проблема, когда я изменил свой сайт asp.net с 3.5 до 4.0.

Чтобы решить проблему, я воссоздал весь веб-сайт в 4.0 страницы за страницей, убедившись, что все страницы имеют одинаковые имена. Я скопировал содержимое страницы для каждой страницы, оставляя верхнюю строку, начинающуюся с <%@ с веб-сайта 3.5 на сайт 4.0.

Я скопировал весь код в классе страницы в коде позади для каждой страницы с сайта 3.5 на 4.0.

Ответ 10

Я получил эту проблему, удалив атрибут runat = "server" из div, хотя я не получал доступ к div на стороне сервера. Проблема заключалась в том, что на стороне клиента я пытался получить доступ к идентификатору клиента div как этот $('# <% = divMultipleDaysOptions.ClientID% > ').

Ответ 11

Я получил аналогичную ошибку, но сценарий был другим. Сценарий: я добавил существующую страницу к моему решению в папке, поэтому мне пришлось изменить значения для некоторых свойств (Наследование) в теге файла html. Когда я изменил структуру папок в свойстве Наследовать, я допустил ошибку и вызвал эту ошибку. Когда структура папок отличается, код за файлом файла не сможет получить доступ к элементу управления в файле .aspx. Итак, друзья, когда вы получаете такую ​​ошибку, посмотрите на значение свойства Inherits (т.е. Структура папок верна).

Ответ 12

Другим возможным сценарием является то, что имя класса в файле Page.aspx.vb отличается от имени класса в файле Page.aspx.designer.vb. Они должны быть идентичными.

Ответ 13

У меня возникла аналогичная проблема после добавления элементов управления к веб-сетке, первоначально написанной в VS 2008.Net 3.5 для VS 2010.Net 4 После добавления элементов управления я получил ту же ошибку. Когда я посмотрел файл .designer.vb для страницы, добавленных элементов управления не было. Проблема была решена путем добавления элементов управления в нижнюю часть файла, например:   Защищенные WithEvents lblApprove как Global.System.Web.UI.WebControls.Label