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