2010-04-21 34 views
0

我承認,我是.NET n00b。基本上我想要做的是我有一個文本框和一個圖像按鈕頁面。點擊圖像按鈕我希望它顯示我設置的視圖控件。在這個視圖控件內部是一個圖像和一些文本。所以這就是我的代碼隱藏。視圖控制中的ASP.Net異常

protected void btnSubmit_Click(object sender, ImageClickEventArgs e) 
    { 
     string email = txtUnsubscribe.Text; 
     vwSuccess.Visible = true; 
    } 

簡單吧?那麼當我點擊提交按鈕時,我會得到「對象引用未設置爲對象的實例」。錯誤信息。我哪裏錯了?

+0

你能發表更多的代碼嗎?從上面的例子來看,問題的出現並不明顯。 – Alex 2010-04-21 18:33:15

+0

txtUnsubscribe是否在視圖控件中?從你的描述看來,情況並非如此,但... – 2010-04-21 18:37:40

回答

0

txtUnsubscribe和vwSuccess都不爲空嗎?你有沒有嘗試在調試器中逐步完成它?

0

根據信息(也就是說,基於不多),我猜你遇到了執行順序問題。

既然你有txtUnsubscribe和vwSuccess成員,我假設你將這些初始化到某個地方。如果它們是從aspx模板自動生成的,那麼它們會在事件處理之前自動初始化,以便該方法永遠不會拋出空引用異常。

如果空引用異常通過該事件處理拋出,那麼就一定意味着這些變量的一個未初始化(這意味着他們中的至少一個不是從ASPX自動生成的,而是應手動初始化)。如果你初始化變量,那麼你可能會在PreRenderRender這樣的事件中做得太晚。

當您單擊瀏覽器中的按鈕時,瀏覽器會執行回發到Web服務器。默認情況下,Web服務器重新構建頁面,執行事件處理,然後將其呈現回客戶端。請注意,請求之間的頁面沒有在服務器上維護,這一點很重要。

網頁加載過程中事件的順序/回傳可以從MSDN中找到:http://msdn.microsoft.com/en-us/library/aa719775(VS.71).aspx

當然,如果該異常不是由事件處理程序拋出,這整個的答案很可能是錯誤的,有可能是一些更簡單的問題。