NullReferenceException при веб-управлении пользователем - PullRequest
0 голосов
/ 28 октября 2010

Первое размещение.:)

Я довольно новый разработчик, поэтому я не очень разбираюсь в распространенных проблемах ASP.NET.

В качестве теста мой начальник попросил меня преобразовать (не очень критично)) ASP.NET сайт от 1.1 до 4.0.Ну, это не очень сложно, и дела идут хорошо.Тем не менее, я попал в небольшую загадку.Я продолжаю получать NullReferenceException, когда запускаю этот код:

Public Property PageTitle() As String

    '===========================================================================
    'Exposes the PageTitle property of the child control.
    '===========================================================================
    Get
        Return lblPageTitle.Text
    End Get

    Set(ByVal Value As String)
        'TODO:  find out why this throws a NullReference exception
        lblPageTitle.Text = Value
    End Set

End Property

К части Value действительно присоединена строка (буквально :), но lblPageTitle просто не будет установлен правильно.

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

Public Shared lblPageTitle As New Label
Public Shared lblUser As New Label
Public Shared lblLastLogin As New Label
Public Shared lblToday As New Label
Public Shared lblSiteTitle As New Label

Очевидно, ключевое слово New могло бы как-то помочь в этой ситуации, но ни один из этих других ярлыков не вызвал никаких проблем.

Я пытался сделатьэто, но это не сработало:

    Dim PageTitle As New Label
    PageTitle = TryCast(ucPageHeader.FindControl("lblTitle"), Label)
    If Not IsNothing(PageTitle) Then
        PageTitle.Text = sb.ToString()
    End If

Есть идеи?

1 Ответ

0 голосов
/ 28 октября 2010

Те объявления, которые вы удалили, требуются ГДЕ-ТО.У меня такое ощущение, что вы используете проект веб-приложения, и ваш файл .designer.vb как-то устарел.В качестве быстрого исправления переключите «Показать все файлы» в обозревателе решений (это маленькая кнопка на панели инструментов вверху слева на боковой панели) и разверните стрелку рядом с файлом .ascx, над которым вы работаете.Вы должны увидеть файл .ascx.vb и файл .ascx.designer.vb.Не вдаваясь в подробности, попробуйте удалить файл designer.vb, затем щелкнуть правой кнопкой мыши на .ascx и выбрать «Преобразовать в веб-приложение».Visual Studio воссоздает ваш .designer.vb, надеюсь, со всеми ссылками на элементы управления.

Рекомендуемое прочтение: Код позади проекта VS 2005 Web * Это для ASP.NET 2.0, но применяются те же основные принципы.

...