亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

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

2024-07-10 13:31:55
字體:
來源:轉載
供稿:網友

在制作控件的時候容易遇到“呈現控件時出錯”“發生了未處理的異常。未將對象引用設置到對象的實例。”這樣的錯誤,如下圖:(也有可能僅僅只是因為未設置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對象的實例將為空,后續的調用將引發異常。

假設說我們只有這個方法用于處理當前所需要的行為,那么我們在調用Page的時候必將導致null的對象并致使后續操作發生異常。這個時候我們引入“設計模式”這個概念(非DesignPattern而是DesignMode),DesignMode是由Control類的一個受保護的(protected)屬性,它獲取一個值,用以指示該組件當前是否處于設計模式。這里的設計模式也就相當于設計時的概念。

因此我們可以將代碼改造為如下形式:

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

這樣只有在非設計時的時候,我們才引入Page對象的實例,因此設計時的異常將迎刃而解。

總結

因此在設計控件的時候,特別是在考慮控件呈現的時候,為了避免類似異常的發生,我們應該考慮該控件在設計時能夠獲取足夠的資源,對于未能獲取資源的項,我們應該顯式將其區分(如上代碼中使用DesignMode來判斷是否為設計時要執行的代碼)。

擴展

剛才我們所見到的情形可以歸結為在設計時無法引用具體實例所導致的異常,類似該異常的還會有數據庫/文件系統讀取、變量未附初值、調用了類似Page的屬性如Session,Page.Request.QueryString等。在頁面設計的時候由于以上部分方案特別是調用到Page的相關方法的由于頁面總是會存在,因此我們不會經??吹剿鼈兂霎惓#谠O計控件的時候我們更應該注意。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到ASP.NET教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕亚洲综合久久| 日韩中文字幕精品| 久久久影视精品| 日韩中文字幕网| 九九热视频这里只有精品| 国产在线精品自拍| 欧美电影电视剧在线观看| 成人免费激情视频| 日韩av在线天堂网| 国外色69视频在线观看| 日韩欧美在线观看| 欧美伊久线香蕉线新在线| 久久久噜噜噜久久中文字免| 欧美丝袜一区二区| 自拍偷拍亚洲在线| 欧美国产在线电影| 欧美日韩不卡合集视频| 国产精品青草久久久久福利99| 搡老女人一区二区三区视频tv| 欧美福利视频在线| 狠狠久久五月精品中文字幕| 91久久精品国产| 91牛牛免费视频| 国产精品偷伦视频免费观看国产| 国产精品日韩久久久久| 欧美极品美女电影一区| 日韩精品在线观看网站| 久久成年人视频| 欧美电影免费观看高清| 色小说视频一区| 欧美亚洲日本网站| 亚洲最大福利视频网站| 欧美日韩在线影院| 欧美激情精品久久久久久变态| 欧美视频13p| 国产一区二区三区精品久久久| 久久视频免费观看| 国产一区深夜福利| 国产视频亚洲视频| 精品亚洲va在线va天堂资源站| 综合av色偷偷网| 久久99精品久久久久久青青91| 国产精选久久久久久| 国内精品久久久| 97碰在线观看| 国产精品人成电影在线观看| 亚洲free嫩bbb| 国产精品丝袜高跟| 一区二区三区四区在线观看视频| 岛国av午夜精品| 亚洲精品国产精品自产a区红杏吧| 国产日韩精品在线播放| 久久久免费精品| 国产精品高精视频免费| 欧美日韩亚洲激情| 欧美精品一本久久男人的天堂| 欧美精品xxx| 欧美成人四级hd版| 精品国产自在精品国产浪潮| 国产精品男人爽免费视频1| 亚洲va码欧洲m码| 久久久久99精品久久久久| 国产日韩欧美夫妻视频在线观看| 亚洲aⅴ男人的天堂在线观看| 欧美成人一区二区三区电影| 亚洲成人黄色网址| 国产亚洲视频中文字幕视频| 国产精品91在线观看| 少妇激情综合网| 亚洲成人国产精品| 亚洲在线免费观看| 亚洲欧美中文日韩在线v日本| 中文字幕不卡av| 国产婷婷色综合av蜜臀av| 成人av在线亚洲| 亚洲午夜av久久乱码| 国产欧美中文字幕| 97国产精品人人爽人人做| 国产不卡在线观看| 7777精品视频| 国产精品视频在线观看| 久久亚洲精品国产亚洲老地址| 亚洲第一二三四五区| 91精品久久久久久久久久久久久久| 国产精品久久一区| 亚洲免费影视第一页| 国产成人午夜视频网址| 成人国产亚洲精品a区天堂华泰| 国产精品久久久久久久久久ktv| 日产精品久久久一区二区福利| 久久艹在线视频| 亚洲精品大尺度| 久久精品视频在线观看| 最新的欧美黄色| 亚洲第一区第一页| 色妞在线综合亚洲欧美| 91九色综合久久| 亚洲视频在线观看免费| 欧美久久精品午夜青青大伊人| 中文字幕日韩欧美在线| 在线播放日韩欧美| 日韩欧美一区二区三区| 国产精品视频网站| 综合网中文字幕| 国产精品99久久久久久www| 日韩在线观看免费高清完整版| 91免费看国产| 欧美老女人性生活| 亚洲视频视频在线| 亚洲欧美中文另类| 日韩av理论片| 欧美超级乱淫片喷水| 久久国产色av| 欧美午夜精品久久久久久人妖| 久久久精品电影| 狠狠躁夜夜躁久久躁别揉| 亚洲无限av看| 亚洲国产欧美久久| 欧美乱大交xxxxx另类电影| 国产成人高潮免费观看精品| 欧美最顶级的aⅴ艳星| 国产精品伦子伦免费视频| 国产免费一区视频观看免费| 亚洲男人7777| 日韩中文字在线| 97国产精品视频人人做人人爱| 日日骚久久av| 成人网在线免费看| 亚洲iv一区二区三区| 美女扒开尿口让男人操亚洲视频网站| 亚洲视频777| 91麻豆国产语对白在线观看| 国产亚洲视频在线观看| 日本久久亚洲电影| 伊人久久大香线蕉av一区二区| 欧美精品videosex性欧美| 国产一区二区视频在线观看| 欧美大片网站在线观看| 亚洲情综合五月天| 国产亚洲精品久久| 欧美体内谢she精2性欧美| 国产精品自拍偷拍| 日韩视频在线一区| 57pao成人国产永久免费| 中文字幕av一区中文字幕天堂| 中文字幕亚洲专区| 亚洲国产另类 国产精品国产免费| 亚洲国产精品一区二区久| 日韩中文字幕在线播放| 日本国产欧美一区二区三区| 麻豆国产精品va在线观看不卡| 欧美日韩成人在线视频| 中文字幕日韩av电影| 国产99久久精品一区二区 夜夜躁日日躁| 国产午夜精品全部视频播放| 国产视频久久久久| 亚洲专区在线视频| 久久久精品免费| 国产成人精品综合久久久| 亚洲变态欧美另类捆绑| 91精品视频专区| 韩国精品美女www爽爽爽视频| 久国内精品在线| 国模私拍视频一区|