Почему мой веб-элемент управления имеет значение null?

StackOverflow https://stackoverflow.com/questions/45339

  •  09-06-2019
  •  | 
  •  

Вопрос

У меня есть веб-сайт в asp.net, который использует главную страницу.На этой главной странице у меня есть элемент управления с несколькими представлениями: одно представление содержит все содержимое страниц содержимого, а другое представление содержит некоторое локальное содержимое главной страницы, где я показываю сообщения об ошибках со всех страниц содержимого.

В этом представлении ошибок у меня есть элемент управления меткой asp.net, который отображает сообщения об ошибках.Обычно метка работает нормально, но в некоторых случаях метка имеет значение null, что приводит к возникновению исключения NullReferenceException.Теперь я обработал этот случай, проверив, имеет ли метка значение null перед ее использованием, но все же у меня вопрос:

Почему этот ярлык имеет значение null?Какие обстоятельства могут это вызвать?

РЕДАКТИРОВАТЬ: На главной странице у меня есть метод SetErrorText, который принимает строку и устанавливает метку.Я вызываю этот метод из метода Page_Load страниц контента, и обычно это работает нормально.Во всех случаях, кроме двух (которые я обнаружил до сих пор), метка инициализируется, и ничто не отличает эти два случая от всех тех, которые работают.

Кроме того, инициализируются все остальные элементы управления на главной странице, например элемент управления View, в котором находится метка.

Когда Page_Load страницы контента меняется, главная страница должна быть заполнена.

Это было полезно?

Решение

Похоже, проблема была в неряшливости.Кто-то забыл удалить автоматически созданные элементы управления контентом, которые Visual Studio добавляет на все страницы контента, где главная страница имеет элемент управления ContentPlaceHolder.

Если страница контента имеет элемент управления Content, все элементы управления, помещенные в элемент управления ContentPlaceHolder на главной странице, по-видимому, будут иметь значение null.

Другие советы

С помощью какого метода на главной странице вы получаете доступ к метке?В зависимости от этапа жизненного цикла страницы элемент управления меткой может быть еще не загружен.

Можете ли вы получить к нему доступ до того, как он будет создан?Проверьте жизненный цикл страницы: http://msdn.microsoft.com/en-us/library/ms178472.aspx

У меня была очень похожая ошибка.В моем случае это было вызвано странностью компилятора .NET, связанной с файлом конструктора элементов управления.Даже если в файле дизайнера элементы управления определены правильно, удалите его, создайте заново и перестройте (обязательно перестройте, а не просто «создайте»).См. верхний ответ здесь о том, как восстановить файл дизайнера:

Как заставить Visual Studio повторно создать файлы .designer для файлов aspx/ascx?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top