国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

VS2010中呈現控件時出錯的解決方法

2024-07-10 12:49:23
字體:
來源:轉載
供稿:網友

在制作控件的時候容易遇到“呈現控件時出錯”“發生了未處理的異常。未將對象引用設置到對象的實例。”這樣的錯誤,如下圖:(也有可能僅僅只是因為未設置runat="server"標簽而導致該錯誤,請先檢查該項。)
但是在編譯時/運行時也都是沒有錯誤的。

分析
如圖所示的情況我們稱之為“設計時”以區別于“編譯時”/“運行時”。

設計時:在ASP.NET環境中也就是當我們在Visual Studio中使用網頁設計器進行編輯的時候。直接的理解就是在ASPX頁面切換到“設計”的時候。

編譯時:直接的理解就是當你進行編譯的時候,通常這個時候的錯誤是由類型檢查,參數匹配等顯式可直接通過語法約束所限制的錯誤。

運行時:直接的理解就是當你進行預覽/運行的時候。通常這個時候的錯誤則是由具體的異常,邏輯錯誤所組成的。
讓我們分析控件在設計時的表現,我們的控件在設計時的時候,VS智能地模擬輸出控件在運行時的樣貌,控件的呈現通過了一定順序的方法,并最終形成了當前輸出。按照標準,我們應該是在Render或RenderContents中對控件進行了輸出的操作(事實上其他也是可以,但我們通常也不那么做,或者說更多的“呈現控件時出錯”的異常主要來自于Render或RenderContents)。
從錯誤的提示“未將對象引用設置到對象的實例。”從這一句話來看,也就是說,有一個或者以上的對象的實例在沒有賦初值的情況下就被使用了。

讓我們窺視一下我們的代碼:

protected override void RenderContents(HtmlTextWriter writer){ UpButton.Text = Page.Server.HtmlDecode(UpButton.Text); DownButton.Text = Page.Server.HtmlDecode(DownButton.Text); base.RenderContents(writer);}

因為該控件在設計的時候需要有一個向上的按鈕和一個向下的按鈕,分別需要用兩個特殊的標點符號向上和向下,而這兩個符號需要通過設置如下所示的代碼編號才可以正確地被瀏覽器呈現:

private string upButtonText = "∧";private string downButtonText = "∨";

而這兩個符號在呈現前卻會被頁面進行一個HtmlEncode方法編譯后再輸出,而這兩個特殊的標志卻只能通過直接輸出的方式進行呈現,也就是說在HtmlEncode之后只能將該特殊標志以文本的形式輸出∧ ∨而不會輸出向上和向下的箭頭。這時候我們需要引入它的反向方法Page.Server.HtmlDecode進行解碼,注意到這里我們使用了Page實例,該實例只有在頁面真實存在的情況下才為非空,否則后續的操作將是對null的操作,而這樣的操作將會顯示“未將對象引用設置到對象的實例。”這樣的錯誤。
設計時:我們剛才提到了,設計時僅僅只是模擬頁面呈現的過程,而頁面事實上是不存在的。因此在這個時候Page對象的實例將為空,后續的調用將引發異常。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宣汉县| 枣阳市| 蓝田县| 白沙| 北票市| 桑植县| 扬中市| 沈阳市| 涟源市| 新宾| 扬州市| 嘉祥县| 清新县| 改则县| 永仁县| 桑植县| 海兴县| 牙克石市| 洛川县| 大安市| 红河县| 盐源县| 多伦县| 姜堰市| 闸北区| 原阳县| 旬邑县| 湟源县| 怀仁县| 顺义区| 叶城县| 北川| 波密县| 永泰县| 遵化市| 渝北区| 越西县| 靖远县| 若尔盖县| 宜川县| 西安市|