2009-06-25 31 views
0

我以前也提出過這個問題here。我再次面臨同樣類型的問題。我有一個用戶控件顯示來自某個業務對象的信息。我已經在兩頁上使用它。在這兩個頁面中,我調用一個帶有業務對象的方法來將用戶控件上的控件(主要是asp標籤)綁定到對象的屬性。我在aspx頁面的LoadComplete方法中調用這個方法。UserControl在一個頁面中工作,但不在其他頁面中

protected void Page_LoadComplete(object sender, EventArgs e) 
    { 
     control.LoadData(bussinessObject); 
    } 

它在兩個頁面上工作正常。現在我有第三頁,我使用相同的控件。現在,當我打電話LoadData在這個新的一頁我得到NullReference例外:

Object reference not set to an instance of an object. 
Description: An unhandled exception occurred during the execution of the 
    current web request. Please review the stack trace for more information 
    about the error and where it originated in the code. 

Exception Details: System.NullReferenceException: Object reference not set 
    to an instance of an object. 

Source Error: 

Line 91:    lblOrgName.Text = obj.Name; 

編輯:! lblOrgName是NULL :(請幫我

編輯2: 我通過踩在頁面頁面加載頁面之後,調用Masterpage的Page_Load,然後調用問題控件的Page Load。在本頁面加載函數的右括號(})停止時,我在立即窗口中輸入了lblOrgName,它顯示爲null :(

然後在包含用戶控件的頁面的LoadComplete中,我停下來並在即時窗口中鍵入控件的名稱。它將其中的所有標籤和其他控件都顯示爲空。

編輯3:

我已經把受保護的構造在用戶控件的建議由Stendhal的答案:

protected OrgInfo(){ } 

現在,我得到這個錯誤:

Compiler Error Message: CS0122: 'Controls.OrgInfo.OrgInfo()' is inaccessible 
      due to its protection level. 

項目根目錄中的aspx頁面和OrgInfo控件位於Controls文件夾中。

編輯4:

我試着在頁面加載方法,但可惜Controls集合的計數創建的所有控制(主要是標籤)爲0(零)!

+0

is obj null or lblOrgName? – shahkalpesh 2009-06-25 06:34:33

回答

2

我把下面的頁面行:

<%@ Register src="~/Controls/OrgInfo.ascx" TagName="OrgInfo" TagPrefix="proj1"/> 

和它的作品!

0

聽起來好像控件「lblOrgName」試圖分配一個值,但它尚未構建/解析到aspx頁面。

請確保您有下面的一組有問題的aspx頁面的@ Page指令:

AutoEventWireup="true" 
+0

是的。 Page Language =「C#」AutoEventWireup =「true」 – TheVillageIdiot 2009-06-25 07:45:35

2

你怎麼把你的用戶控件在網頁上?這在過去發生在我身上,原因是控件意外地被添加爲服務器控件而不是用戶控件。控制中的所有子控制都從未安裝過。

您可以通過將在一個受保護的默認構造函數的代碼隱藏的用戶控件檢查:

保護的MyUserControl(){}

這樣的控制不能被實例化作爲服務器控件。

+0

我編輯了這個問題。請進一步的建議?我把它寫成這樣 TheVillageIdiot 2009-06-25 08:21:35

相關問題