【问题标题】:NullReferenceException on web user controlWeb 用户控件上的 NullReferenceException
【发布时间】:2010-10-28 01:01:27
【问题描述】:

第一次发帖。 :)

我是一个相当新的开发人员,所以我不太熟悉常见的 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 设置不正确。

如果有帮助,请提供更多背景信息:以前,此 Web 用户控件在代码隐藏中包含这些,但它们开始抛出错误,因为它们已被声明。无论如何,他们在这里:

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

有什么想法吗?

【问题讨论】:

    标签: asp.net vb.net nullreferenceexception web-controls


    【解决方案1】:

    您删除的那些声明在某些地方是必需的。我感觉您正在使用一个 Web 应用程序项目,而您的 .designer.vb 文件不知何故已经过时了。作为快速修复,在您的解决方案资源管理器中切换“显示所有文件”(它是一个位于侧边栏左上方的小工具栏按钮)并展开您正在处理的 .ascx 文件旁边的箭头。您应该会看到一个 .ascx.vb 文件和一个 .ascx.designer.vb 文件。无需赘述,尝试删除 Designer.vb 文件,然后右键单击 .ascx 并选择“转换为 Web 应用程序”。 Visual Studio 将重新创建您的 .designer.vb,希望所有控件引用都完好无损。

    推荐阅读:Code-Behind with VS 2005 Web Application Projects。它适用于 ASP.NET 2.0,但适用相同的基本原则。

    【讨论】:

      猜你喜欢
      • 2010-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      • 1970-01-01
      相关资源
      最近更新 更多