生活随笔
收集整理的這篇文章主要介紹了
【转帖】OnPreRender Render的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
| 轉自:http://hi.baidu.com/trip008/blog/item/d6139ab77b5414f130add1e9.html protected override void OnPreRender(EventArgs e) protected override void Render(HtmlTextWriter writer) 這兩個的區別。可否告知
====================================================
asp.net頁面在觸發各個子控件的事件之后,會遞歸調用控件的OnpreRender,然后(注意)遞歸地將控件的ViewState序列化成一個字符串,最后遞歸調用控件的Render輸出結果(在最高層控件即page控件的Render就會把那個ViewState序列化字符串寫到輸出的html的隱藏字段中)。 因此,在Render中創建、改變的內容即使寫入ViewState,其實也無法在頁面回發之后被恢復,葉面回發之后回填的ViewState仍然是OnPreder或者之前的時候得值。 因此通常,控件的OnPrerender用來最控件的最后最后一次改變(動態生成),而在Render中僅僅用來輸出html而并不改變控件自身。
另外,控件在vs設計器中的時候,并不是page對象驅動頁面顯示的。雖然在設計其上看上去很像asp.net應用程序處理頁面的結果。起碼,設計器并不調用OnPrerender,而是根據Designer標簽中說明的方法來調用顯示邏輯。這樣你就可以讓控件在設計器中表現為與運行時不同的結果。例如表格控件在設計器中就不顯示所有綁定數據,而是顯示自己創建的一組示例數據,以便讓你有一個簡潔的方式設計界面布局,同時也讓連接數據庫等等只有在運行時才需要的費時、可能失敗的行為在設計時避免執行。
這里我想到一個常見現象。很多人已經會寫自定義控件了。但是其實只了解運行時的控制機制,寫出的自定義控件并不支持vs設計器的控制機制。例如這個OnPreRender在設計時并不被調用是很多人不知道的。精通編寫自定義控件的人,也許僅僅讓其以程序代碼的方式被使用,其編寫的自定義控件使用在RAD方式的時候并不好用,這是常見的。 |
轉載于:https://www.cnblogs.com/ziling8163/archive/2009/02/17/1392255.html
總結
以上是生活随笔為你收集整理的【转帖】OnPreRender Render的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。