出版時間:2009年4月 出版社:電子工業(yè)出版社 作者:鄭健 頁數(shù):646
Tag標簽:無
前言
中學的時候,在語文課堂上學習過庖丁解牛的寓言故事。生活在戰(zhàn)國時期的著名思想家莊子,以其神來之筆向我們介紹了一位古代的“牛人”庖丁,通過長期的實踐,在掌握了“?!钡纳斫Y構后,“解?!睍r可以得心應手,運用自如,尤其是最后的描述“提刀而立,為之四顧,為之躊躇滿志,善刀而藏之”讓吾輩神往不已,一代“解?!贝髠b,頗有獨孤求敗的氣勢!后來我又學過一篇寓言故事,即宋朝歐陽修所著的《賣油翁》,同樣描述了一位經(jīng)過反復實踐,在酌油時,油可以“自錢孔入,而錢不濕”的賣油翁,這其實也是一位神人。而且賣油翁非常謙虛,在總結自己的成功經(jīng)驗時,只說了一句“無他,但手熟爾”。在很長的一段時間內,我一直認為這兩篇故事講述的是同一個道理,所有的技能通過反復的磨煉,最后在實踐時均可以做到得心應手,運用自如,均為“無它,但手熟爾”。三十六行,行行出狀元。我也一直將各種程序界的“?!比吮扔鳛殁叶』蛘哔u油翁,認為他們可以非常熟練地掌握各種相關知識,在編寫程序時信手拈來,拖拖拽拽之間,最終的應用程序成型出爐,最后提“鼠標”而立,為之四顧,為之躊躇滿志。當有后輩請教時,非常謙虛地面帶微笑曰:我亦無它,惟手熟爾。讓周圍手不熟的同事也為之神往不已。但后來我發(fā)現(xiàn),其實這些神人之間還是有很大差異的,這種差異其實正好體現(xiàn)了賣油翁與庖丁的不同境界?;仡櫼幌拢贏SP.NET之后, Web編程開始變得異常簡單,因為它將更多的實現(xiàn)細節(jié)隱藏在框架內部。大部分需求場景甚至僅需要拖曳控件就可以了,不需要編寫任何代碼。更有甚者,從ASP.NET 2.0開始,包括用戶管理(注冊、找回密碼、更改密碼等)、導航(站點地圖、菜單等)在內的場景都不需要再編寫代碼,只需要將相應的控件拖到表單上即可以完成編碼。這在一定程度上使得生產(chǎn)力得以大大提升,開發(fā)人員不必了解具體的開發(fā)細節(jié),只需要將這些積木式的“控件”所完成的功能了解清楚即可。在工作中,隨心所欲地玩轉這些控件,似乎已經(jīng)成為了ASP.NET編程高手的象征。而在遇到問題時,大部分ASP.NET開發(fā)人員的第一個想法就是去互聯(lián)網(wǎng)上尋找現(xiàn)成的控件。這樣,很多開發(fā)人員可以在經(jīng)過短時間的磨煉后,就可以面帶微笑得向其新來同事笑曰:我亦無它,惟手熟爾。但相信在這些“謙虛”的“賣油翁”當中,有很多只是“知其然,而不知其所以然”。
內容概要
本書主要介紹ASP.NET的控件開發(fā),書中通過70多個例子講解了ASP.NET控件開發(fā)技術的各個方面,而且剖析了很多控件中系統(tǒng)基類源代碼,讀者從這些系統(tǒng)源代碼可以體會設計模式思想。如果扎實地掌握了ASP.NET控件的運行機制,開發(fā)一個頁面級的ASP.NET應用程序會變得非常簡單。本書宗旨就是讓開發(fā)人員真正理解ASP.NET技術,幫助開發(fā)人員提高ASP.NET開發(fā)的技術水平。學完本書后您不僅能夠掌握控件開發(fā)各個方面的技術,而且深曉ASP.NET的工作原理。對大部分使用ASP.NET技術開發(fā)兩年左右的開發(fā)人員來說,本書75%以上的內容可能沒有接觸過,本書將通過筆者精心準備的一些生動的例子來闡述這些內容。 本書適合從事ASP.NET技術多年想往深度理解ASP.NET工作機制的開發(fā)人員閱讀,對于剛剛入門的初級開發(fā)人員,本書的前面幾章也介紹了幾個入門性的應用例子,本書還可以作為在校學生的就業(yè)預備教材。針對讀者安裝的開發(fā)環(huán)境不同,筆者分別為VS 2005和VS 2008建立了解決方案,即無論您是使用VS 2005還是VS 2008都可以成功打開本書隨書光盤的代碼,只是使用VS 2005打開的解決方案不包含.NET 3.5對應章節(jié)內容的示例代碼。
作者簡介
姓名:鄭健
網(wǎng)名:【夜戰(zhàn)鷹】
【ChengKing(zhengJian)】
MSDN中文技術論壇版主;CSDN B log專家、社區(qū)專家、榮譽專家;CSDN社區(qū)ASP.NET版塊版主、ASP.NET控件/組件開發(fā)版塊版主;2006—2009年多屆微軟全球最有價值專家;榮獲“DevWOW微軟博客達人”優(yōu)勝獎;榮獲微軟“最有影響力開發(fā)者”獎項。具有多年Web開發(fā)經(jīng)驗,目前在北京用友軟件集團平臺技術部門從事ERP產(chǎn)品的底層Ul控件/組件設計工作。
作為一個對技術的癡狂追求者,我很明白分享的重要意義,因為有過許多次當遇到問題從網(wǎng)上尋找到答案的驚喜,所以希望本書也能為鐘情于ASP.NET的讀者,們帶來同樣的感受。
書籍目錄
第1章 服務器控件概述及開發(fā)環(huán)境部署 1.1 自定義服務器控件 1.2 服務器控件在軟件開發(fā)過程中的作用 1.3 在控件開發(fā)中提升自己 1.4 可繼承控件基類介紹 1.5 運行一個簡單的控件 1.5.1 開發(fā)一個簡單控件 1.5.2 部署和運行 1.6 控件生命周期 1.6.1 概述 1.6.2 用代碼跟蹤控件生命周期過程 1.7 本章總結 第2章 服務器控件開發(fā)中的調試技術 2.1 預置代碼示例 2.2 調試頁面服務端代碼 2.3 服務器控件的調試 2.3.1 運行模式下的調試方法 2.3.2 設計模式下的調試方法 2.4 JavaScript腳本調試方法 2.4.1 調試頁面中的JavaScript腳本(方法一) 2.4.2 調試頁面中的JavaScript腳本(方法二) 2.4.3 調試非嵌入式JavaScript腳本文件 2.4.4 調試嵌入式JavaScript腳本資源文件 2.4.5 高效率調試的技巧 2.5 Ajax Library對JavaScript調試支持 2.6 本章總結 第3章 從零開始開發(fā)服務器控件 3.1 選擇基類 3.2 控件呈現(xiàn)順序 3.3 Render呈現(xiàn)控件的幾種方式 3.3.1 使用HTMLTextWriter類輸出 3.3.2 直接輸出HTML標簽 3.3.3 使用服務器控件的RenderControl方法 3.4 AddAttributesToRender方法 3.5 CreateChildControls方法 3.6 INamingContainer接口 3.7 實現(xiàn)復合控件 3.7.1 CreateChildControls方法 3.7.2 ChildControlsCreated屬性 3.7.3 EnsureChildControls方法 3.7.4 RecreateChildControls方法 3.7.5 Controls屬性 3.7.6 HasControls方法 3.7.7 HasEvents方法 3.7.8 FindControl方法 3.7.9 實現(xiàn)復合控件示例 3.8 常用開發(fā)技巧 3.8.1 DesignMode屬性 3.8.2 屏蔽基類控件中的屬性 3.8.3 Page.Request.Browser屬性 3.8.4 設置控件ID規(guī)范 3.8.5 增強FindControl功能 3.8.6 映射服務端控件值到客戶端 3.8.7 禁止派生自CompositeControl的控件創(chuàng)建子控件 3.8.8 使用CreateChildControls的注意事項 3.8.9 不要誤解設計元屬性DefaultValue 3.8.10 在Render方法中利用基類資源 3.8.11 條件編譯&條件屬性 3.9 本章總結 第4章 服務器控件屬性 4.1 控件屬性的作用 4.1.1 系統(tǒng)屬性 4.1.2 自定義屬性 4.2 簡單屬性 4.3 屬性的設計時特性 4.4 復雜屬性 4.4.1 概述 4.4.2 復雜屬性的幾種標記形式 4.4.3 深入研究——復雜屬性分析器 4.5 深入研究——定制自己的屬性編輯器 4.5.1 系統(tǒng)屬性編輯器 4.5.2 定制屬性編輯器 4.6 類型轉換器 4.6.1 系統(tǒng)類型轉換器 4.6.2 定制自己的類型轉換器 4.7 實現(xiàn)自定義屬性 4.8 本章總結 第5章 事件和數(shù)據(jù)回發(fā)機制 5.1 控件事件和數(shù)據(jù)回發(fā)概述 5.1.1 事件及其意義 5.1.2 數(shù)據(jù)回發(fā)機制 5.2 事件和數(shù)據(jù)回發(fā)機制的實現(xiàn) 5.2.1 客戶端回傳事件接口IPostBackEventHandler 5.2.2 客戶端回發(fā)/回調揭密 5.2.3 回傳數(shù)據(jù)處理接口IPostBackDataHandler 5.2.4 正確處理繼承基類中控件的事件 5.2.5 擴展KingTextBox控件功能(KingTextBoxCanPostEvent控件) 5.3 復合控件的事件處理機制 5.3.1 高效率事件集合對象 5.3.2 定制自己的委托和事件參數(shù)類 5.3.3 復合控件的事件處理 5.3.4 自動完成功能控件SearchControlIntelligent 5.4 本章總結 第6章 頁面狀態(tài)機制 6.1 頁面狀態(tài)概述 6.2 視圖狀態(tài)機制 6.2.1 IStateManager接口 6.2.2 控件生命周期中的裝載和保存視圖階段 6.2.3 簡單類型視圖狀態(tài)應用 6.2.4 實現(xiàn)自定義類型視圖狀態(tài) 6.3 控件狀態(tài)機制 6.4 視圖狀態(tài)和控件狀態(tài)的關系 6.4.1 在禁用視圖狀態(tài)的情況下仍然使用ViewState對象 6.4.2 IStateManager接口仍然可以在控件狀態(tài)中使用 6.4.3 視圖狀態(tài)和控件狀態(tài)組合使用規(guī)則 6.5 加密頁面狀態(tài) 6.6 清除頁面狀態(tài) 6.7 對動態(tài)添加控件的視圖狀態(tài)分析 6.8 自定義類型轉換器實現(xiàn)高效率序列化 6.9 頁面狀態(tài)性能優(yōu)化策略 6.9.1 存儲位置優(yōu)化——把視圖狀態(tài)信息保存在服務端而非客戶端 6.9.2 體積優(yōu)化——壓縮視圖狀態(tài)數(shù)據(jù) 6.9.3 分塊存儲視圖狀態(tài)數(shù)據(jù) 6.10 視圖狀態(tài)和控件狀態(tài)的總結 6.11 本章總結 第7章 定制自定義控件主題樣式 7.1 控件樣式概述 7.2 ASP.NET對樣式的支持 7.2.1 Style類的工作原理及使用 7.2.2 WebControl基類對樣式的支持功能及其工作原理 7.2.3 HTMLTextWriter類對控件樣式的支持 7.2.4 定義控件內部的樣式屬性規(guī)則 7.2.5 兩個常用轉換方法 7.3 應用示例 7.3.1 復合控件樣式及視圖狀態(tài) 7.3.2 控件結構與樣式分離方案 7.4 本章總結 第8章 控件客戶端編程模型 8.1 ASP.NET服務端控件對客戶端的支持 8.2 ClientScriptManager類功能詳解 8.2.1 RegisterArrayDeclaration方法 8.2.2 RegisterClientScriptBlock方法 8.2.3 RegisterClientScriptInclude方法 8.2.4 RegisterClientScriptResource方法 8.2.5 RegisterStartupScript方法 8.2.6 RegisterExpandoAttribute方法 8.2.7 RegisterHiddenField方法 8.2.8 GetCallbackEventReference方法 8.2.9 GetPostBackClientHyperlink方法 8.2.10 GetPostBackEventReference方法 8.2.11 GetWebResourceUrl方法 8.2.12 RegisterOnSubmitStatement方法 8.3 客戶端回調 8.4 客戶端控件應用示例 8.4.1 封裝JS客戶端對象 8.4.2 封裝HTC客戶端對象 8.4.3 在線簽名控件示例應用 8.5 常用的一些JavaScript框架 8.6 本章總結 第9章 定制用戶控件 9.1 用戶控件概述 9.1.1 用戶控件的作用 9.1.2 了解System.Web.UI.UserControl基類 9.2 用戶控件應用示例 9.2.1 簡單用戶控件 9.2.2 復雜數(shù)據(jù)綁定用戶控件 9.3 用戶控件緩存 9.3.1 ASP.NET緩存介紹 9.3.2 用戶控件緩存 9.4 本章總結 第10章 開發(fā)驗證控件 10.1 驗證控件的工作原理 10.1.1 內置驗證控件簡述 10.1.2 驗證控件的工作機制解析 10.2 實現(xiàn)自定義驗證控件 10.3 本章總結 第11章 在控件中使用嵌入資源 11.1 在控件中嵌入資源的原理 11.2 在控件中應用嵌入資源 11.2.1 在控件中使用嵌入資源 11.2.2 常用嵌入資源類型及用法 11.3 瀏覽器常用工具 11.3.1 HttpWatch 11.3.2 IE Develper Toolbar 11.3.3 Fiddler 11.4 本章總結 第12章 開發(fā)模板數(shù)據(jù)綁定控件 12.1 ASP.NET模板屬性控件機制 12.1.1 模板屬性介紹 12.1.2 ASP.NET對模板控件的支持 12.1.3 Repeater控件模板實現(xiàn)機制解析 12.2 自定義控件應用示例 12.2.1 模板控件功能 12.2.2 應用示例 12.3 本章總結 第13章 數(shù)據(jù)綁定和數(shù)據(jù)源控件 13.1 數(shù)據(jù)綁定控件 13.1.1 數(shù)據(jù)綁定控件概述 13.1.2 ASP.NET對數(shù)據(jù)綁定控件的支持 13.2 數(shù)據(jù)綁定控件示例應用 13.2.1 控件實現(xiàn)功能 13.2.2 應用示例 13.3 數(shù)據(jù)源控件 13.3.1 數(shù)據(jù)源控件概述 13.3.2 ASP.NET對數(shù)據(jù)源控件的支持 13.4 數(shù)據(jù)源控件示例應用 13.4.1 控件實現(xiàn)功能 13.4.2 應用示例 13.5 本章總結 第14章 擴展控件方案——GridView 14.1 擴展控件概述 14.2 任意定制GridView多表頭 14.2.1 功能概述 14.2.2 代碼實現(xiàn) 14.3 固定GridView表頭并增加滾動條支持 14.3.1 功能概述 14.3.2 代碼實現(xiàn) 14.4 本章總結 第15章 自定義控件設計模式下編程匯總 15.1 .NET框架對設計時支持 15.2 設計時元數(shù)據(jù)支持 15.3 復雜屬性序列化 15.4 類型轉換器 15.5 屬性編輯器 15.6 設計模式可用基類介紹 15.7 設計時對控件呈現(xiàn)的支持 15.7.1 概述 15.7.2 應用示例 15.8 自動套用格式 15.8.1 概述 15.8.2 應用示例 15.9 模板UI設計器 15.10 智能操作列表 15.10.1 概述 15.10.2 應用示例 15.11 控件設計器區(qū)域 15.11.1 概述 15.11.2 應用示例 15.12 本章總結 第16章 ASP.NET Ajax控件開發(fā)——客戶端 16.1 ASP.NET Ajax框架概述 16.2 Ajax Library對客戶端面向對象功能支持 16.2.1 命名空間及Type和Function類 16.2.2 接口類型 16.2.3 類類型以及面向對象繼承特征 16.2.4 枚舉類型 16.2.5 反射功能 16.3 Ajax Library中的常用類型 16.3.1 Ajax Library對JavaScript基類型的擴展 16.3.2 Sys.StringBuilder類 16.4 Ajax Library請求服務端和WebServices 16.4.1 Sys.NET命名空間中的類 16.4.2 請求過程解析 16.4.3 WebRequest請求示例 16.4.4 使用代理實現(xiàn)Ajax調用服務端示例 16.5 Ajax Library對控件客戶端類開發(fā)的支持 16.5.1 客戶端控件基成員(類/接口) 16.5.2 ASP.NET Ajax控件客戶端生命周期 16.6 客戶端控件示例應用 16.7 調試和跟蹤 16.8 本章總結 第17章 ASP.NET Ajax控件開發(fā)——服務端 17.1 ASP.NET Ajax服務器控件概述 17.2 Ajax服務器控件 17.2.1 Ajax服務器控件 17.2.2 ASP.NET Ajax擴展程序控件 17.3 ASP.NET Ajax對服務器控件支持的基類 17.3.1 Ajax控件支持的基類 17.3.2 Ajax控件應用示例 17.4 本章總結 附錄A .NET 3.5技術教程系列——Collection/ASP.NET Ajax/ SilverLight/JQuery
章節(jié)摘錄
插圖:第1章 服務器控件概述及開發(fā)環(huán)境部署本章內容1.1 自定義服務器控件1.2 服務器控件在軟件開發(fā)過程中的作用1.3 在控件開發(fā)中提升自己1.4 可繼承控件基類介紹1.5 運行一個簡單的控件1.6 控件生命周期1.1 自定義服務器控件什么是服務器控件?一個Button就是一個服務器控件。ASENET提供了很多服務器控件,比如:TextBox,GridView,Login等。服務器控件是能夠完成一定的通用交互功能,編譯成程序集,并嵌入到頁面(擴展名為.aspx的文件)中的控件。當客戶端向服務器請求一個頁面時,頁面構造器能夠使控件與頁面一起以被瀏覽器識別的HTML標記串返回;在客戶端跟用戶交互后,可以將屬性又提交回服務器,以及觸發(fā)事件等。服務端控件分為HTML服務器控件和Web服務器控件??傊掌骺丶闪艘欢ǖ慕换スδ?,具有較強的代碼重用性。自定義服務器控件除了具備上面所說的服務器控件的所有特性外,還可以滿足某個自己定制的功能。1.2 服務器控件在軟件開發(fā)過程中的作用服務器控件開發(fā)在軟件開發(fā)應用中是非常必要的。使用自定義服務器控件的情況有以下幾種:1.需要使用集成了業(yè)務功能的控件一般微軟或第三方控件公司提供的控件只具備技術方面的功能通用性,在做一個具體的系統(tǒng)時,會用到很多封裝多種業(yè)務的控件。如ERP系統(tǒng)中的參照控件,就是一個典型的將業(yè)務和技術封裝在一塊的控件。這樣不僅可以做到“代碼重用”,也可以做到“業(yè)務重用”。
媒體關注與評論
不是誠心想成為杰出ASP.NET程序專家者,請勿浪費時間翻閱本書。 ——胡德民相信您閱讀過此書后,會像庖丁一樣,有一種提書而立,為之四顧,為之躊躇滿志的感覺?! 鹾槌?/pre>編輯推薦
《庖丁解牛:縱向切入ASP.NET3.5控件和組件開發(fā)技術》能幫您真正地理解ASP.NET技術,不僅能夠掌握控件開發(fā)的各個方面的技術,而且也能透徹理解ASP.NET的工作原理;控件開發(fā)工作的天然好處就是讓您擁有更多實戰(zhàn)面向對象的機會,從而能更真切地感受到。面向對象; 對控件系統(tǒng)基類源代碼的縱向切入能幫您更深入地理解設計模式思想;它能幫您摒棄許多作為開發(fā)人員所固有的陋習——只知其然,不知其所以然,擺脫“傻瓜式”編程的境地,直接深入到底層;它還是您開發(fā)過程當中的良師益友,內容全面,對每每個控件開發(fā)技術點均有詳盡的闡述,最適合作為您工作當中的查詢手冊?!垛叶〗馀?縱向切入ASP.NET3.5控件和組件開發(fā)技術》的承諾:從未接觸過ASP.NET技術的讀者,能使您直接晉升到ASP.NET控件開發(fā)的層次;從未接觸過ASPNET控件開發(fā)的讀者,能使您自如地開發(fā)自己想要的控件;從未接觸過ASP.NET控件開發(fā)但熟悉ASP.NET技術的讀者,能使您的功力直接提升三倍!圖書封面
圖書標簽Tags
無評論、評分、閱讀與下載