2010-10-28 48 views
0

首次發佈。 :)Web用戶控件上的NullReferenceException

我是一個非常新的開發人員,所以我不熟悉常見的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 

值部分確實有連接到它(字面字符串:)但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 

顯然,新的關鍵字可能會在這種情況下以某種方式幫助,但沒有與其他標籤造成任何麻煩。

我已經試過這樣做,但它沒有工作:

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

任何想法?

回答

0

你刪除的那些聲明是SOMEWHERE所必需的。我有一種感覺,你正在使用一個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,但適用相同的基本原則。