ASP.NET 4權威指南(完整版)_第1頁
ASP.NET 4權威指南(完整版)_第2頁
ASP.NET 4權威指南(完整版)_第3頁
ASP.NET 4權威指南(完整版)_第4頁
ASP.NET 4權威指南(完整版)_第5頁
已閱讀5頁,還剩892頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

ASP.NET4權威指南目錄\h第一部分ASP.NET開發(fā)基礎\h第0章預備課:學習從這里開始\h0.1認識Microsoft.NET\h0.2ASP.NET的特點\h0.3ASP.NET的版本變遷\h0.4ASP.NET4為我們帶來了什么\h0.5MicrosoftVisualStudio2010集成開發(fā)環(huán)境\h0.6本章小結\h第1章開發(fā)你的第一個ASP.NET應用—“Hello,World”\h1.1創(chuàng)建“Hello,World”Web應用程序\h1.2ASP.NET網頁代碼模型\h1.3ASP.NET生命周期\h1.4ASP.NET配置\h1.5全局應用程序類Global.asax\h1.6新建Web網站與新建Web應用程序的區(qū)別\h1.7本章小結\h第2章HTML服務器控件\h2.1ASP.NET服務器控件概述\h2.2HTML服務器控件概述\h2.3HTML輸入控件\h2.4HTML容器控件\h2.5HtmlImage控件\h2.6使用代碼處理HTML服務器控件\h2.7本章小結\h第3章Web標準服務器控件\h3.1Web標準服務器控件概述\h3.2數(shù)據(jù)顯示控件\h3.3數(shù)據(jù)輸入控件\h3.4數(shù)據(jù)提交控件\h3.5圖像顯示控件\h3.6文件上傳控件\h3.7Calendar控件\h3.8HyperLink控件\h3.9Panel控件\h3.10HiddenField控件\h3.11AdRotator控件\h3.12本章小結\h第4章ASP.NET驗證控件\h4.1驗證控件概述\h4.2表單驗證控件:RequiredFieldValidator\h4.3范圍驗證控件:RangeValidator\h4.4比較驗證控件:CompareValidator\h4.5正則驗證控件:RegularExpressionValidator\h4.6自定義邏輯驗證控件:CustomValidator\h4.7驗證信息顯示:ValidationSummary\h4.8驗證控件編程實踐\h4.9驗證組\h4.10本章小結\h第5章ASP.NET用戶控件\h5.1用戶控件詳解\h5.2@Control指令\h5.3創(chuàng)建簡單的用戶控件\h5.4用戶控件編程\h5.5ClientIDMode屬性\h5.6本章小結\h第二部分ASP.NET數(shù)據(jù)訪問\h第6章ASP.NET數(shù)據(jù)管理\h6.1ADO.NET概述\h6.2Connection類\h6.3連接池\h6.4Command類和DataReader類\h6.5常用的數(shù)據(jù)庫操作\h6.6事務\h6.7非連接的數(shù)據(jù)概述\h6.8DataTable類\h6.9DataSet類\h6.10DataView類\h6.11提供程序無關的代碼\h6.12本章小結\h第7章數(shù)據(jù)控件綁定與操作\h7.1List數(shù)據(jù)控件\h7.2DetailsView控件\h7.3FormView控件\h7.4Repeater控件\h7.5ListView控件\h7.6DataList控件\h7.7Chart控件\h7.8本章小結\h第8章詳解GridView控件\h8.1GridView控件基礎\h8.2格式化GridView\h8.3樣式定義\h8.4GridView控件的基本操作\h8.5選擇行\(zhòng)h8.6GridView模板\h8.7GridView的常用編程技巧\h8.8本章小結\h第9章LINQ查詢基礎\h9.1LINQ查詢概述\h9.2LINQ基本子句\h9.3LINQ查詢操作\h9.4本章小結\h第10章LINQtoADO.NET\h10.1LINQtoSQL\h10.2LINQtoDataSet\h10.3QueryExtender控件\h10.4本章小結\h第11章XML與LINQtoXML\h11.1XML概述\h11.2基于流的XML處理\h11.3基于內存中的XML處理\h11.4驗證XML\h11.5LINQtoXML\h11.6本章小結\h第12章ADO.NET實體框架\h12.1理解ADO.NET實體框架\h12.2LINQtoEntities\h12.3EntitySQL\h12.4操作對象\h12.5本章小結\h第三部分構建ASP.NET站點\h第13章頁面樣式與布局\h13.1在HTML中使用CSS的三種形式\h13.2CSS基本語法\h13.3CSS框模型\h13.4CSS定位\h13.5CSS浮動\h13.6在VS2010中編輯CSS\h13.7常用頁面布局標簽\h13.8本章小結\h第14章ASP.NET母版頁\h14.1母版頁基礎\h14.2在母版頁和內容頁之間傳遞數(shù)據(jù)\h14.3以編程方式設置母版頁\h14.4嵌套母版頁\h14.5本章小結\h第15章主題和皮膚\h15.1使用ASP.NET中的主題\h15.2創(chuàng)建自己的主題\h15.3定義多個皮膚選項\h15.4以編程的方式設置主題\h15.5理解Page和Master頁面的EnableTheming屬性\h15.6本章小結\h第16章站點導航\h16.1多視圖頁面\h16.2理解站點地圖\h16.3SiteMapDataSource控件\h16.4SiteMapPath控件\h16.5處理站點地圖文件\h16.6自定義SiteMapProvider從數(shù)據(jù)庫中讀取站點地圖數(shù)據(jù)結構\h16.7站點地圖安全性調整\h16.8TreeView控件\h16.9Menu控件\h16.10本章小結\h第四部分ASP.NET高級話題\h第17章ASP.NET狀態(tài)管理\h17.1ASP.NET狀態(tài)管理概述\h17.2Response對象\h17.3Request對象\h17.4Server對象\h17.5Cookie\h17.6會話狀態(tài)\h17.7視圖狀態(tài)\h17.8ASP.NET路由\h17.9本章小結\h第18章自定義服務器控件\h18.1創(chuàng)建簡單的自定義服務器控件\h18.2元數(shù)據(jù)特性\h18.3視圖狀態(tài)與控件狀態(tài)\h18.4事件處理\h18.5簡單屬性和子屬性\h18.6集合屬性\h18.7自定義狀態(tài)管理\h18.8組合式控件\h18.9本章小結\h第19章ASP.NET緩存\h19.1理解ASP.NET緩存\h19.2輸出緩存\h19.3數(shù)據(jù)緩存\h19.4高級緩存依賴\h19.5自定義輸出緩存提供程序\h19.6分布式緩存Velocity\h19.7本章小結\h第20章多語言本地化應用程序\h20.1ASP.NET網頁資源\h20.2在網頁中使用資源\h20.3為不同的語言選擇資源文件\h20.4CultureInfo類\h20.5System.Globalization命名空間\h20.6設置編碼\h20.7本章小結\h第21章ASP.NETWeb部件\h21.1什么是Web部件\h21.2Web部件控件集\h21.3創(chuàng)建簡單的Web部件頁面\h21.4頁顯示模式\h21.5Web部件的高級應用\h21.6本章小結注:原文檔電子版(非掃描),需要的請下載本文檔后留言謝謝。第一部分ASP.NET開發(fā)基礎第0章預備課:學習從這里開始第1章開發(fā)你的第一個ASP.NET應用—“Hello,World”第2章HTML服務器控件第3章Web標準服務器控件第4章ASP.NET驗證控件第5章ASP.NET用戶控件第0章預備課:學習從這里開始俗話說:“萬事開頭難”,學習程序設計也一樣。一個好的開始會讓我們提高學習的興趣,增加學習的信心,當然也會增加一點學習的成就感。為了讓你能夠有一個良好的學習開端,我們將在本章介紹一些關于ASP.NET的概念性知識,例如什么是.NET(讀作“dot-net”)、ASP.NET各版本的變遷過程及其自身的語言特點等。除了這些概念性知識之外,還會重點介紹MicrosoftVisualStudio2010與ASP.NET4的新特性、MicrosoftVisualStudio2010集成開發(fā)環(huán)境的結構及其使用等。這些概念性知識都是必須了解的,尤其是對于初學者。0.1認識Microsoft.NET究竟什么是.NET呢?2000年微軟的白皮書是這樣定義.NET的:Microsoft.NET是MicrosoftXMLWebServices平臺。XMLWebServices允許應用程序通過Internet進行通信和共享數(shù)據(jù),而不管所采用的是哪種操作系統(tǒng)、設備或編程語言。Microsoft.NET平臺為創(chuàng)建XMLWebServices并將這些服務集成在一起提供了可能。Microsoft.NET包括如下技術領域,如圖0-1所示。圖0-1Microsoft.NET包括的技術領域其中,.NET框架是一個多語言組件開發(fā)和執(zhí)行環(huán)境,它提供了一個跨語言的統(tǒng)一編程環(huán)境。.NET框架的目的是便于開發(fā)人員更容易地建立Web應用和Web服務,使得Internet上的各種應用之間可以使用Web服務進行溝通。開發(fā)人員可以將遠程應用提供的服務和單機應用的服務結合起來,組成一個新的應用。.NET框架的結構如圖0-2所示。圖0-2.NET框架的結構.NET語言和語言工具支持多種開發(fā)語言(見表0-1),程序員可以將多種與.NET兼容的語言結合起來開發(fā).NET應用。多個程序員可以共同參與同一個軟件項目,每個人可以使用自己最精通的.NET語言(如C#、VB等)來編寫代碼。0.2ASP.NET的特點在了解了.NET的概念之后,現(xiàn)在來看看什么是ASP.NET。ASP.NET是一個統(tǒng)一的Web開發(fā)模型,它提供了為建立和部署企業(yè)級Web應用所必需的服務。同時,ASP.NET是Microsoft.NETFramework的一部分,是一種可以在高度分布的Internet環(huán)境中簡化應用程序開發(fā)的計算環(huán)境。當編寫ASP.NET應用程序的代碼時,可以訪問.NETFramework中的類??梢允褂门c公共語言運行庫((CmmonLanguageRuntime,CLR)兼容的任何語言來編寫應用程序的代碼,這些語言包括MicrosoftVisualBasic、C#、JScript.NET和J#。使用這些語言,可以開發(fā)利用公共語言運行庫、類型安全、繼承等方面的優(yōu)點的ASP.NET應用。因此,它有如下特點:1)ASP.NET是同Microsoft.NETFramework集成在一起的,運行在CLR運行庫環(huán)境之內。ASP.NET建立在.NETFramework的編程類之上,它提供了一個Web應用程序模型,并且包含使生成ASPWeb應用程序變得簡單的控件集和結構。ASP.NET包含封裝公共HTML用戶界面元素(如文本框和下拉菜單)的控件集,但這些控件在Web服務器上運行,并以HTML的形式將它們的用戶界面推送到瀏覽器。在服務器上,這些控件公開一個面向對象的編程模型,為Web開發(fā)人員提供了面向對象的編程的豐富性。ASP.NET還提供結構服務(如會話狀態(tài)管理和進程回收),進一步減少了開發(fā)人員必須編寫的代碼量,并提高了應用程序的可靠性。另外,ASP.NET能讓開發(fā)人員以服務的形式交付軟件。使用XMLWebServices功能,ASP.NET開發(fā)人員可以編寫自己的業(yè)務邏輯并使用ASP.NET結構,最后通過SOAP交付該服務。2)ASP.NET是編譯執(zhí)行的,它支持多種編程語言,同時,它也是面向對象的。在ASP.NET應用開發(fā)中,可以使用與CLR兼容的任何語言來編寫應用程序的代碼,如MicrosoftVisualBasic、C#、JScript.NET和J#等編程語言。以C#為例,它會經過兩個階段的編譯過程:第一個階段,編寫的C#代碼首先被C#編譯器編譯成.NET的中間語言((ItermediateLanguage,IL)。實際上,所有.NET語言(包括MicrosoftVisualBasic、C#等)都會編譯成相同的IL代碼,這也是.NET為什么能夠做到與語言無關性的關鍵所在。當頁面被第一次請求的時候,第一步的編譯過程會自動執(zhí)行,當然也可以提前執(zhí)行(我們將此稱為預編譯),這個編譯的IL代碼文件稱為程序集。圖0-3ASP.NET頁面代碼的編譯過程第二階段在這個頁面實際執(zhí)行的時候開始。此時,IL代碼被編譯成本機機器代碼,我們將此階段稱為即時編譯((Jst-In-Time,JIT)。可以用圖0-3來描述這兩個階段的編譯過程。其實,ASP.NET應用程序不必在每次請求網頁的時候都進行編譯,這些中間語言代碼在源文件被修改之前只被編譯一次。關于代碼究竟什么時候編譯成IL代碼,這取決于你創(chuàng)建Web項目的方式。在MicrosoftVisualStudio2010中,如果采用新建Web應用程序的方式來創(chuàng)建Web項目,那么在編譯項目的時候,代碼就會被編譯成IL;如果采用新建網站的方式來創(chuàng)建Web項目,那么頁面代碼在第一次請求的時候才會被編譯成IL。無論哪種方式,代碼都是在第一次執(zhí)行時進入編譯的第二階段,即從IL到本機機器代碼。3)ASP.NET是跨瀏覽器和跨設備的。要做到跨任何瀏覽器運行是所有Web開發(fā)人員所面臨的最大挑戰(zhàn),同時,它也是衡量一門Web編程語言的重要指標。但對于今天的ASP.NET程序員來講,跨瀏覽器的問題似乎變得不那么重要。如果你在開發(fā)中完全使用ASP.NET自帶的Web服務器控件,那么這些Web服務器控件將會根據(jù)客戶端的瀏覽器來自動生成相應的HTML。這樣,你不用編寫任何其他的額外代碼就能夠實現(xiàn)跨瀏覽器支持。4)ASP.NET易于配置與部署。說到ASP.NET的易于配置與部署的特性,這是任何一個開發(fā)平臺所不能夠比擬的,微軟在這方面一直都做得非常好。尤其是在Windows7和WindowsServer2008操作系統(tǒng)里面自帶了.NET之后,通過復制程序的方式就能夠讓程序自由運行。0.3ASP.NET的版本變遷迄今為止,ASP.NET已經算是非常成熟的一項Web開發(fā)技術,但它也是經歷了多個版本才能夠有現(xiàn)在的地位。所以,了解ASP.NET的發(fā)展歷程對于每個ASP.NET開發(fā)人員來說都是非常有意義的。可以把它的發(fā)展歷程分為以下幾個階段,本文分成三小節(jié)分別進行介紹。0.3.1ASP.NET1.0與ASP.NET1.12002年,隨著微軟.NET口號的提出與WindowsXP、OfficeXP的發(fā)布,微軟發(fā)布了代號為“Rainier”的VisualStudio.NET(內部版本號為7.0)。它最大的改進就是使用.NET框架(版本1.0)引入了受控代碼開發(fā)環(huán)境,使用.NET開發(fā)的程序并不會像C++那樣被編譯為機器語言,而是被編譯成一種叫做微軟中間語言((MIL)或者通用中間語言((I)的格式。當一個MSIL應用程序被執(zhí)行時,它會被即時編譯成適用于所運行平臺的機器語言,這樣就使得代碼可以跨平臺運行。與此同時,ASP.NET這種新型Web開發(fā)技術也閃亮登場(版本1.0)。它的前身是ASP,但與ASP相比,ASP.NET發(fā)生了質的變化:1)改變了傳統(tǒng)ASP的開發(fā)模式,使用了設計與代碼分離的代碼隱藏模型。2)消除了對腳本引擎的依賴性,支持多語言開發(fā),如C#、VisualBasic等。其中,C#是微軟當時引入的一門新型語言(讀作CSharp,意為C++++),它是建立在C++和Java基礎之上的現(xiàn)代語言,是編寫.NET框架的語言。3)提供了豐富的Web服務器控件和代碼調試等工具,讓你使用“拖曳”的方式就能夠很快地設計出自己的網頁,大大地節(jié)約了設計成本。4)功能強大的身份確認模型。2003年,微軟對VisualStudio2002進行了部分修訂,發(fā)布了代號為“Everett”的VisualStudio2003(內部版本號為7.1)。它將.NET框架由1.0版升級到1.1版,同時為使用ASP.NET或.NETCompactFramework來開發(fā)移動設備程序提供了內置支持。0.3.2ASP.NET2.0到2005年,微軟發(fā)布了VisualStudio2005,同時也將ASP.NET由1.1版升級到2.0版本。相對于ASP.NET1.1,ASP.NET2.0做了如下方面的改進:1)豐富的控件。在原來的基礎上增加了許多新的控件,如站點導航控件、數(shù)據(jù)控件(包括數(shù)據(jù)源控件和數(shù)據(jù)綁定控件)、登錄系列控件、Web部件和其他服務器控件等,從而大大地降低了開發(fā)成本。2)母版頁。母版頁是擴展名為.master的文件,其代碼內容和結構與普通.aspx文件類似。在創(chuàng)建母版頁時,需要將頁面公共部分存儲于母版頁中,例如,頁面公用的頁頭、頁尾等,而非公共部分則使用ContentPlaceHolder控件實現(xiàn)占位。雖然內容頁文件擴展名為.aspx,但是代碼內容和結構與普通.aspx文件代碼相距甚遠,其代碼分為兩個部分:代碼頭聲明一個或多個Content控件。開發(fā)人員需要在內容頁代碼頭綁定母版頁,同時,將頁面非公共部分內容設置在Content控件標簽之間。在運行時,用戶不能直接請求母版頁,只能請求訪問內容頁。此時,母版頁和內容頁將合并生成結果頁,結果頁面包含頁面公共部分和非公共部分的運行結果。3)主題和皮膚?!爸黝}”是指頁面和控件外觀屬性設置的集合。主題由一組文件構成,可能包括皮膚文件、CSS文件、圖片和其他資源等,它們都必須存儲在App_Themes文件夾中。皮膚文件是主題的核心內容,擴展名為.skin,其中包含各種服務器控件的各種屬性設置。利用主題功能,不僅能夠定義頁面和控件的外觀,還可以在所有Web應用、單個Web應用的所有頁面或單個Web頁面中,快速一致地應用所定義的外觀。另外,還可以根據(jù)應用的需要動態(tài)加載主題。4)個性化用戶配置。個性化用戶配置功能主要用于存儲單個用戶配置數(shù)據(jù),這些數(shù)據(jù)可以是簡單數(shù)據(jù)類型,也可以是復雜數(shù)據(jù)類型,甚至自定義對象等。同時,單個用戶既可以是匿名用戶,也可以是注冊用戶。默認情況下,所有用戶配置數(shù)據(jù)都存儲在SQLServer數(shù)據(jù)庫中,并且無須自行創(chuàng)建和維護該數(shù)據(jù)庫,這些工作都由ASP.NET2.0自動完成。個性化用戶配置功能還支持從應用程序中任何位置訪問的多種強類型API,以方便存儲、顯示和管理用戶配置信息。個性化用戶配置功能的使用非常簡單,首先在Web.config文件中定義配置信息名稱、數(shù)據(jù)類型等,然后調用與用戶配置功能有關的強類型API。例如,Profile實現(xiàn)對用戶配置信息的存儲、訪問和管理等應用。5)成員資格和角色管理。成員資格和角色管理功能的核心是利用自動生成的數(shù)據(jù)庫表、多個實現(xiàn)管理功能的API、成員資格和角色管理提供程序,實現(xiàn)模塊化和自動化的成員資格和角色管理模式。具體而言,包括創(chuàng)建和管理用戶和角色信息、實現(xiàn)對多種數(shù)據(jù)源中用戶和角色信息的管理、驗證訪問應用程序的用戶憑證、支持使用Cookie緩存角色信息、實現(xiàn)角色管理與成員資格管理等功能的集成。6)配置和管理工具。為了快速方便地實現(xiàn)應用程序的配置和管理,ASP.NET2.0提供了兩個內置的可視化工具:一個是ASP.NETMMC管理單元,另一個是Web網站管理工具。只要你的計算機中安裝了Internet信息服務((IS)和.NETFramework2.0或以上版本,那么打開IIS即可使用ASP.NETMMC管理單元。利用該工具可對指定應用程序的連接字符串、應用程序配置、自定義錯誤、授權、身份驗證、公共編譯、頁和運行時、全球化和標識、應用程序狀態(tài)、位置等進行全面設置,所有設置結果都將顯示在應用程序Web.config文件中。從這一角度而言,ASP.NETMMC管理單元是一個用于編輯Web.config文件的圖形化工具。0.3.3ASP.NET3.52007年11月,微軟發(fā)布了VisualStudio2008英文版,并于2008年2月14日發(fā)布了簡體中文專業(yè)版,ASP.NET也由2.0升級到3.5。相對其他的版本來說,ASP.NET3.5取得了更大的技術突破,為開發(fā)者提供了一系列新技術:1)內置對ASP.NETAJAX的支持。Ajax(異步JavaScript和XML)這幾年來一直是Web開發(fā)領域的熱點話題,它是一項快捷的客戶端編程技術,它允許頁面不必觸發(fā)一次完整的回發(fā)就可以調用服務器方法并更新自身的內容。通常,Ajax頁面通過客戶端腳本代碼觸發(fā)一次幕后的異步請求,服務器端接收到請求后,執(zhí)行相關的請求代碼,返回頁面所需要的數(shù)據(jù),客戶端代碼獲取到新數(shù)據(jù)后利用它們再執(zhí)行其他動作,如刷新頁面的一部分等。在ASP.NET3.5中,提供了對ASP.NETAJAXExtension部分的內置支持。而且,在如下方面進行了增強:?對JavaScript編程的智能感知((itellisense)支持。?對ASP.NETAJAX庫提供集成的編輯器支持。?針對支持JSON的.asmxWeb服務編程的智能感知支持。?增強的JavaScript調試支持。?ASP.NETAJAX擴展器控件支持。2)引入了重量級對象—LINQ技術。LINQ(LanguageIntegratedQuery,語言集成查詢)允許你編寫C#或者VisualBasic代碼以查詢數(shù)據(jù)庫相同方式操作內存數(shù)據(jù)??梢允褂盟鼇聿樵兗虾蛿?shù)組中的數(shù)據(jù)、數(shù)據(jù)庫中的數(shù)據(jù)和XML中的數(shù)據(jù)等,并且語法是一樣的,而且很像SQL查詢語法。此外,ASP.NET3.5還新出爐了幾個ASP.NET數(shù)據(jù)控件:<asp:ListView>、<asp:LinqDataSource>與<asp:DataPager>。這幾個控件在數(shù)據(jù)訪問方面與LINQ對象結合可以提供更豐富的支持。3)對Silverlight的支持。Silverlight是一種新的Web呈現(xiàn)技術,能在各種平臺上運行。借助該技術,你將擁有內容豐富、視覺效果絢麗的交互式體驗。而且,無論是在瀏覽器內、各種設備上,還是在桌面操作系統(tǒng)(如AppleMacintosh)中,你都可以獲得這種體驗。在VisualStudio2008推出不久,微軟就推出了VisualStudio2008ServicePack1版本。該版本主要針對VisualStudio2008進行了相關的錯誤修復、安全補丁和小幅度的性能優(yōu)化。同時,在ASP.NET方面也加強了ASP.NETAJAX的功能,并提供了對ASP.NET動態(tài)數(shù)據(jù)的支持等。0.4ASP.NET4為我們帶來了什么微軟的每一次新版本發(fā)布對于我們開發(fā)人員來說都是激動人心的,它所提供的強大功能和人性化的操作界面總會讓你心潮澎湃、激動不已。當然,MicrosoftVisualStudio2010與ASP.NET4也不會讓我們失望,現(xiàn)在就來看一下它為我們提供了哪些新的開發(fā)特性。0.4.1MicrosoftVisualStudio2010集成開發(fā)環(huán)境在ASP.NET的Web項目開發(fā)方面,MicrosoftVisualStudio2010集成開發(fā)環(huán)境主要做了以下幾方面的改進:1)起始項目模板。不論是使用新建網站模板創(chuàng)建Web項目,還是使用新建Web應用程序模板創(chuàng)建Web項目,VisualStudio2010都會提供兩種模板供我們選擇,如圖0-4所示。圖0-4使用新建Web應用程序模板創(chuàng)建Web項目其中,使用EmptyASP.NETWebApplication模板創(chuàng)建的是一個空的Web項目,而使用ASP.NETWebApplication模板創(chuàng)建的Web項目是一個帶有許多開發(fā)模板文件的項目,詳細區(qū)別將在第1章講解。2)多定向支持。如圖0-4所示,VisualStudio2010的多定向支持使你可以在VisualStudio2010集成開發(fā)環(huán)境中同時開發(fā)或運行.NET2.0、.NET3.0、.NET3.5和.NET4版本的程序。因此,你也可以將任何.NET2.0、.NET3.0、.NET3.5版本的項目升級到.NET4。3)多顯示器支持。VisualStudio2010允許將編輯器、設計器和工具窗口移到頂層窗口之外,放在你想要的任何地方、系統(tǒng)的任何顯示器上。這可以顯著地改善屏幕的可使用面積,優(yōu)化總的開發(fā)工作流程。想利用多個顯示器的特性是非常容易的。只要單擊任何一個文檔標簽((tb)或者工具窗口,將其拖到頂層IDE窗口中的一個新位置,或者拖到IDE之外,到你想要的任何顯示器上的任意一個位置,如圖0-5所示。圖0-5移動VisualStudio2010開發(fā)窗口之后,如果想要重新定位((dck)文檔、窗口,可以將它們拖回到主窗口(或者右擊,選擇重新定位功能選項)。VisualStudio會記住文檔保存時最后的屏幕位置,這意味著,當你關閉并再次打開項目時,文檔會自動恢復到上次保存時的布局。4)ASP.NET、HTML、JavaScript代碼片段支持。如圖0-6所示,VisualStudio2010提供了對HTML、ASP.NET、JavaScript代碼片段的支持。代碼片段允許你創(chuàng)建一段代碼和標識,然后只需最少量的字符輸入就可很快地在你的應用中將其施用,從而使你在源碼視圖內更有效率。圖0-6ASP.NET、HTML、JavaScript代碼片段支持同時,VisualStudio2010包含了超過200個內置的代碼片段,這些片段安裝后即使用。更棒的是,你不會局限于僅使用內置的代碼片段,還可以輕松地創(chuàng)建自己的代碼片段(連帶可置換的參數(shù)),可將它們導入VisualStudio2010,以及輕松地與其他開發(fā)人員分享,這便于你快速地自動化自己的常做任務。5)代碼的智能提示?;蛟S,“代碼的智能提示”這個特性對你來說并不陌生,它在VisualStudio2010以前的版本中就已經有了,但那時候的“代碼的智能提示”指示的是匹配你輸入字符的所有項,但這樣的提示往往使得查找比較困難。但在VisualStudio2010中,微軟改變了這種匹配方式,使用了過濾功能,過濾了一些不相關的提示。這種新的智能提示過濾方法便于你在編寫代碼時可以很快速地找到并使用類和成員,你可以在VB和C#語言編程時使用該特性,從而提高你編寫代碼的速度,如圖0-7所示。圖0-7代碼的智能提示0.4.2ASP.NET核心服務相對于ASP.NET3.5SP1來說,ASP.NET4算是一個功能性增強版本,它引入了多項可改進ASP.NET核心服務的功能。1.可擴展輸出緩存其實,自ASP.NET1.0發(fā)布之后,開發(fā)人員就可以通過輸出緩存將生成的頁、控件和HTTP響應的輸出存儲在內存中。對于后續(xù)的Web請求,ASP.NET可以從內存中檢索生成的輸出而不是從頭開始重新生成輸出,從而更快地提供內容服務。但此方法有一個限制,即生成的內容必須始終存儲在內存中。在流量較大的服務器上,輸出緩存的內存需求可能會與Web應用程序其他部分的內存需求產生沖突。ASP.NET4為輸出緩存增加了擴展性,它允許你能夠配置一個或多個自定義輸出緩存提供程序。輸出緩存提供程序可使用任何存儲機制保存HTML內容。這些存儲選項包括本地或遠程磁盤、云存儲和分布式緩存引擎。借助ASP.NET4中的輸出緩存提供程序擴展性,可以為網站設計更主動且更智能的輸出緩存策略。例如,可以創(chuàng)建這樣一個輸出緩存提供程序,該程序在內存中緩存站點流量“排名前10”的頁面,而在磁盤上緩存流量較低的頁面,也可以根據(jù)所呈現(xiàn)頁面的各種變化因素組合進行緩存,但應使用分布式緩存以減少前端Web服務器的內存消耗??梢詫⒆远x輸出緩存提供程序作為派生自新的OutputCacheProvider類型的類創(chuàng)建。隨后,可以通過使用OutputCache元素的新的providers節(jié)在Web.config文件中配置提供程序,如下面的示例所示:<caching><outputCachedefaultProvider="AspNetInternalProvider"><providers><addname="MyOutputCacheProvider"type="_19_1.MyOutputCacheProvider,19-1"/></providers></outputCache></caching>默認情況下,ASP.NET4中所有的HTTP響應、生成的網頁以及控件都使用內存輸出緩存,其中defaultProvider屬性被默認設置為AspNetInternalProvider。當然,可以更改Web應用程序中所使用的默認輸出緩存提供程序,這是通過為defaultProvider指定一個不同的提供程序名稱實現(xiàn)的,如下面的代碼所示。<caching><outputCachedefaultProvider="MyOutputCacheProvider"><providers><addname="MyOutputCacheProvider"type="_19_1.MyOutputCacheProvider,19-1"/></providers></outputCache></caching>此外,還可以針對每個控件和每個請求選擇不同的輸出緩存提供程序。為不同的Web用戶控件選擇不同的輸出緩存提供程序的最簡單的方法就是在用戶控件的指令中以聲明方式使用新的ProviderName屬性,如下面的代碼所示。<%@ControlLanguage="C#"AutoEventWireup="true"CodeBehind="MyOutputCacheProviderUserControl.ascx.cs"Inherits="_19_1.MyOutputCacheProviderUserControl"%><%@OutputCacheDuration="30"VaryByParam="none"ProviderName="MyOutputCacheProvider"%><asp:LabelID="Label1"runat="server"/>關于可擴展輸出緩存,將在第19章中詳細闡述。2.預加載Web應用程序預加載功能提供了一種可控方法,用于啟動應用程序池,初始化ASP.NET應用程序,然后接受HTTP請求。通過這種方法,可以在處理第一項HTTP請求之前初始化開銷很大的應用程序。例如,可以使用應用程序預加載管理器初始化某個應用程序,然后向負載平衡器發(fā)出信號,告知應用程序已初始化并做好接受HTTP流量的準備。值得注意的是,該技術只能夠在WindowsServer2008R2上的IIS7.5中運行。若要使用應用程序預加載管理器,需要由IIS管理員通過使用applicationHost.config文件中的以下配置將IIS7.5中的應用程序池設置為自動啟動:<applicationPools><addname="MyApplicationPool"startMode="AlwaysRunning"/></applicationPools>由于一個應用程序池可包含多個應用程序,因此需要通過使用applicationHost.config文件中的以下配置分別指定要自動啟動的各個應用程序:<sites><sitename="MySite"id="1"><applicationpath="/"serviceAutoStartEnabled="true"serviceAutoStartProvider="PrewarmMyCache"><!——Additionalcontent——></application></site></sites><!——Additionalcontent——><serviceAutoStartProviders><addname="PrewarmMyCache"type="MyNamespace.CustomInitialization,MyLibrary"/></serviceAutoStartProviders>如果IIS7.5服務器冷啟動或某個應用程序池已回收,IIS7.5將使用applicationHost.config文件中的信息確定哪些Web應用程序必須自動啟動。對于每個標記為預加載的應用程序,IIS7.5將向ASP.NET4發(fā)送一個請求以啟動該應用程序使其處于一種狀態(tài),在該狀態(tài)下該應用程序暫時無法接受HTTP請求。當應用程序處于這種狀態(tài)時,ASP.NET將對serviceAutoStartProvider特性定義的類型進行實例化并調入其公共入口點。通過實現(xiàn)IProcessHostPreloadClient接口,可以創(chuàng)建具有所需入口點的托管預加載類型。3.永久重定向頁面對于頁面的重定向,ASP.NET4增加了一個RedirectPermanent方法,它可以方便地發(fā)出HTTP301(“永久移動”)響應,如下面的示例所示:RedirectPermanent("/Main.aspx");識別永久重定向的搜索引擎及其他用戶代理將存儲與內容關聯(lián)的新URL,從而消除瀏覽器用于臨時重定向的不必要的往返。4.會話狀態(tài)壓縮默認情況下,ASP.NET提供兩個用于存儲整個Web場中會話狀態(tài)的選項:第一個選項是一個調用進程外會話狀態(tài)服務器的會話狀態(tài)提供程序;第二個選項是一個在MicrosoftSQLServer數(shù)據(jù)庫中存儲數(shù)據(jù)的會話狀態(tài)提供程序。由于這兩個選項均在Web應用程序的工作進程之外存儲狀態(tài)信息,因此在將會話狀態(tài)發(fā)送至遠程存儲器之前,必須對其進行序列化。如果會話狀態(tài)中保存了大量數(shù)據(jù),序列化數(shù)據(jù)可能會變得很大。ASP.NET4針對這兩種類型的進程外會話狀態(tài)提供程序引入了一個新的壓縮選項。使用此選項后,在Web服務器上有多余CPU周期的應用程序可以大大縮減序列化會話狀態(tài)數(shù)據(jù)的大小??梢允褂门渲梦募衧essionState元素的新的compressionEnabled特性設置此選項,當compressionEnabled配置選項設置為true時,ASP.NET使用.NETFrameworkGZipStream類對序列化會話狀態(tài)進行壓縮和解壓縮。下面的示例演示了如何設置該特性:<sessionStatemode="SqlServer"sqlConnectionString="datasource=dbserver;InitialCatalog=aspnetstate"allowCustomSqlDatabase="true"compressionEnabled="true"/>5.簡潔的Web.config文件在ASP.NET4中,配置信息被移到了machine.config文件中,從而使Web.config比以前的版本更簡潔和清晰,如下面的代碼所示。<?xmlversion="1.0"?><!——FormoreinformationonhowtoconfigureyourASP.NETapplication,pleasevisithttp:///fwlink/?LinkId=169433——><configuration><system.web><compilationdebug="true"targetFramework="4.0"/></system.web></configuration>0.4.3ASP.NETWeb窗體在Web窗體方面,ASP.NET4做了以下幾方面的改進。1.Page.MetaKeywords和Page.MetaDescription屬性MetaKeywords和MetaDescription是Page類新增加的兩個屬性,使用它們可以設置頁面對應的meta標記—keywords和description。2.為頁面的各個控件啟用視圖狀態(tài)Control類增加了一個新屬性ViewStateMode,可以使用該屬性來啟用單個控件的視圖狀態(tài)。3.支持最近引入的瀏覽器和設備在ASP.NET中,包含一項名為“瀏覽器功能”的功能,可用于確定用戶使用的瀏覽器的功能。其中,瀏覽器功能由存儲在HttpRequest.Browser屬性中的HttpBrowserCapabilities對象表示,有關特定瀏覽器功能的信息由瀏覽器定義文件定義。在ASP.NET4中,這些瀏覽器定義文件已更新為包含有關最近引入的瀏覽器和設備(如Chrome、BlackBerry和iPhone等)的信息。附帶的瀏覽器定義文件包括:blackberry.browser、chrome.browser、Default.browser、firefox.browser、gateway.browser、generic.browser、ie.browser、iemobile.browser、iphone.browser、opera.browser和safari.browser。除此之外,ASP.NET4還提供了一項名為“瀏覽器功能提供程序”的新功能。它可用于構建一個提供程序,該提供程序還可用于編寫自定義代碼以確定瀏覽器功能。4.ASP.NET路由ASP.NET4增加了對使用Web窗體進行路由的內置支持。路由是ASP.NET3.5SP1引入的一項功能,通過此功能可將應用程序配置為使用對用戶和搜索引擎有意義的URL,這樣無須指定物理文件名。使用這項功能,可以使站點更友好,并增加站點內容被搜索引擎發(fā)現(xiàn)的概率。例如,顯示應用程序中產品類別的某個頁面的URL如下面的示例所示:http://website/products.aspx?id=10通過路由功能,可以使用下面的URL呈現(xiàn)相同的信息:http://website/products/software很顯然,第二個URL不僅能使用戶了解將獲得的內容,并且還可以顯著提高在搜索引擎搜索結果中的排名。5.設置客戶端ID在ASP.NET4中,所有的控件都增加了一個ClientIDMode屬性??梢允褂么藢傩詠碛绊慉SP.NET用于生成控件的ClientID值的算法,從而更加方便地控制控件客戶端ID。該屬性是一個枚舉類型,它有四個枚舉值,其原型如下面所示:usingSystem;namespaceSystem.Web.UI{publicenumClientIDMode{Inherit=0,AutoID=1,Predictable=2,Static=3,}}6.在GridView和ListView控件中保持行選擇在ASP.NET的早期版本中,行選擇是基于頁面的行索引進行的。例如,如果選擇第一頁上的第三行,當移至第二頁時,則會自動選定第二頁上的第三行。在大多數(shù)情況下,更理想的情況是不選擇第二頁上的任何行。而在ASP.NET4中,它新增加了一個EnablePersistedSelection屬性來支持持久化選擇。啟用此功能后,將基于行數(shù)據(jù)鍵選擇項。這意味著,如果你選擇第一頁上的第三行,當移至第二頁時,并不會選定第二頁上的任何行。當再次返回第一頁時,仍將選定第三行。其中,設置示例如下面所示:<asp:GridViewid="GridView1"runat="server"PersistedSelection="true"></asp:GridView>7.使用CSS簡化FormView控件內容的樣式設置在ASP.NET的早期版本中,F(xiàn)ormView控件使用項模板呈現(xiàn)內容。這使得在標記中進行樣式設置十分困難,因為控件會呈現(xiàn)意外的表行和表單元格標記。而在ASP.NET4中,提供了屬性RenderOuterTable,當此屬性設置為false時,則不會呈現(xiàn)表標記,這樣也就更容易對控件內容應用CSS樣式。設置示例如下面的代碼所示:<asp:FormViewID="FormView1"runat="server"RenderTable="false">8.簡化ListView控件的布局ASP.NET3.5中引入的ListView控件不僅具備GridView控件的所有功能,同時還可以全面地控制輸出。但是,該控件的早期版本要求在使用中指定布局模板LayoutTemplate,如下面的示例代碼所示:<asp:ListViewID="ListView1"runat="server"><LayoutTemplate><asp:PlaceHolderID="ItemPlaceHolder"runat="server"></asp:PlaceHolder></LayoutTemplate><ItemTemplate><%Eval("Name")%></ItemTemplate></asp:ListView>而在ASP.NET4中,簡化了此控件的使用,可以不需要布局模板。即上面示例中的標記可以替換為下面的標記:<asp:ListViewID99="ListView1"runat="server"><ItemTemplate><%Eval("Name")%></ItemTemplate></asp:ListView>9.使用QueryExtender控件篩選數(shù)據(jù)我們知道,創(chuàng)建數(shù)據(jù)驅動的網頁時,一項十分常見的任務就是數(shù)據(jù)篩選操作。篩選操作通過僅顯示滿足指定條件的記錄,從數(shù)據(jù)源排除數(shù)據(jù)。通過篩選,可以在不影響數(shù)據(jù)集中的數(shù)據(jù)的情況下以多種方式查看這些數(shù)據(jù)。以前,篩選操作通常要求創(chuàng)建Where子句以應用于查詢數(shù)據(jù)源的命令。但是,LinqDataSource控件的Where屬性并不公開LINQ中提供的全部功能。為了更便于篩選數(shù)據(jù)操作,ASP.NET4中新增加了一個新的QueryExtender控件,該控件可通過聲明性語法從數(shù)據(jù)源中篩選出數(shù)據(jù)。使用QueryExtender控件有以下優(yōu)點:?與編寫Where子句相比,可提供功能更豐富的篩選表達式。?提供一種LinqDataSource和EntityDataSource控件均可使用的查詢語言。例如,如果將QueryExtender與這些數(shù)據(jù)源控件配合使用,則可以在網頁中提供搜索功能,而不必編寫特定于模型的Where子句或eSQL語句。?可以與LinqDataSource或EntityDataSource控件配合使用,或與第三方數(shù)據(jù)源配合使用。?支持多種可單獨和共同使用的篩選選項。10.對Web標準和輔助功能的增強支持ASP.NET控件的早期版本有時會呈現(xiàn)不符合HTML、XHTML或輔助功能標準的標記。而在ASP.NET4中,消除了其中大部分異常情況。主要體現(xiàn)在以下幾個方面:(1)用于可禁用控件的CSS在ASP.NET3.5中,當將某個控件的Enabled屬性設置為false時,系統(tǒng)會將一個disabled特性添加到呈現(xiàn)的HTML元素中。例如,下面的標記將創(chuàng)建一個已禁用的Label控件:<asp:Labelid="Label1"runat="server"Text="已禁用的Label控件"Enabled="false"/>在ASP.NET3.5中,原有控件設置將生成以下HTML:<spanid="Label1"disabled="disabled">已禁用的Label控件</span>而在HTML4.01中,針對span元素將disabled特性視為無效。對于僅供顯示的元素(如span),瀏覽器通常支持呈現(xiàn)禁用的外觀,但根據(jù)輔助功能標準,依賴于這種非標準行為的網頁并不可靠。因此,對于這些僅供顯示的元素,應使用CSS指明已禁用的可視外觀。在默認情況下,ASP.NET4將針對上面顯示的控件設置生成以下HTML:<spanid="Label1"class="aspNetDisabled">已禁用的Label控件</span>當然,可以通過設置DisabledCssClass屬性來更改控件禁用時默認呈現(xiàn)的class特性的值。也就是說,如果要使用不同于“aspNetDisabled”默認值的類名,通??梢栽贕lobal.asax文件的Application_Start方法中放入代碼來執(zhí)行此操作,如下面的示例所示:protectedvoidApplication_Start(objectsender,EventArgse){WebControl.DisabledCssClass="customDisabledClassName";}現(xiàn)在的Label控件將生成以下HTML:<spanid="Label1"class="customDisabledClassName">已禁用的Label控件</span>(2)用于驗證控件的CSS在ASP.NET3.5中,驗證控件將默認顏色red呈現(xiàn)為內聯(lián)樣式。例如,下面的標記創(chuàng)建一個RequiredFieldValidator控件:<asp:RequiredFieldValidatorID="RequiredFieldValidator1"runat="server"ErrorMessage="RequiredField"ControlToValidate="RadioButtonList1"/>ASP.NET3.5為驗證程序控件呈現(xiàn)以下HTML:<spanid="RequiredFieldValidator1"style="color:Red;visibility:hidden;">RequiredFieldValidator</span>默認情況下,ASP.NET4不會呈現(xiàn)將顏色設置為紅色的內聯(lián)樣式。內聯(lián)樣式僅用于隱藏或顯示驗證程序,如下面的示例所示:<spanid="RequiredFieldValidator1"style"visibility:hidden;">RequiredFieldValidator</span>因此,ASP.NET4不會自動以紅色顯示錯誤消息。(3)用于隱藏字段Div元素的CSSASP.NET使用隱藏字段存儲狀態(tài)信息,如視圖狀態(tài)和控件狀態(tài),這些隱藏字段包含在div元素中。在ASP.NET3.5中,此div元素沒有class特性或id特性。因此,影響所有div元素的CSS規(guī)則可能會在無意中導致此div變?yōu)榭梢姞顟B(tài)。為避免上面這種問題,ASP.NET4使用一個CSS類呈現(xiàn)隱藏字段的div元素,該類可用于將隱藏字段div與其他元素區(qū)分開來。呈現(xiàn)的HTML如下所示:<divclass="aspNetHidden">(4)用于Table、Image和ImageButton控件的CSS默認情況下,在ASP.NET3.5中,某些控件會將所呈現(xiàn)HTML的border特性設置為0。下面的示例顯示了由ASP.NET3.5中的Table控件生成的HTML:<tableid="Table2"border="0">Image控件和ImageButton控件也會這樣,但由于此設置完全沒有必要,而且會提供應通過使用CSS提供的可視格式設置信息,因此,在ASP.NET4中未生成該特性。(5)用于UpdatePanel和UpdateProgress控件的CSS在ASP.NET3.5中,UpdatePanel和UpdateProgress控件不支持expando特性。因此,無法針對它們呈現(xiàn)的HTML元素設置CSS類。而在ASP.NET4中,這些控件已更改為接受expando特性,如下面的示例所示:<asp:UpdatePanelrunat="server"class="myStyle"></asp:UpdatePanel>下面是此標記呈現(xiàn)的HTML:<divid="ctl00_MainContent_UpdatePanel1"class="expandoclass"></div>(6)消除不需要的外部表在ASP.NET3.5中,F(xiàn)ormView、Login、PasswordRecovery與ChangePassword控件呈現(xiàn)的HTML包裝在一個table元素中,該元素的用途是將內聯(lián)樣式應用于整個控件。如果使用模板自定義這些控件的外觀,則可以在你在模板中提供的標記中指定CSS樣式。在這種情況下,不需要額外的外部表。在ASP.NET4中,通過將新的RenderOuterTable屬性設置為false,可以避免呈現(xiàn)表。(7)向導控件的布局模板在ASP.NET3.5中,Wizard和CreateUserWizard控件可生成用于可視格式設置的HTMLtable元素。在ASP.NET4中,可以使用LayoutTemplate元素指定布局。如果這樣做,將不生成HTMLtable元素。在模板中,可創(chuàng)建占位符控件來指示應在該控件中動態(tài)插入項的位置。(8)用于CheckBoxList和RadioButtonList控件的新增HTML格式設置選項ASP.NET3.5使用HTML表元素為CheckBoxList和RadioButtonList控件的輸出設置格式。為提供不使用表進行可視格式設置的替代方法,ASP.NET4為RepeatLayout枚舉增加了兩個選項:?UnorderedList此選項指定使用ul和li元素,而不是表對HTML輸出進行格式設置。?OrderedList此選項指定使用ol和li元素,而不是表對HTML輸出進行格式設置。(9)Table控件的頁眉和頁腳元素在ASP.NET3.5中,可通過設置TableHeaderRow類和TableFooterRow類的TableSection屬性將Table控件配置為呈現(xiàn)thead和tfoot元素。而在ASP.NET4中,這些屬性均默認設置為適當?shù)闹?。?0)Menu控件的CSS和ARIA支持在ASP.NET3.5中,Menu控件使用HTMLtable元素進行可視化格式設置,在某些配置中無法通過鍵盤訪問該控件。在ASP.NET4中,通過以下方法解決了這些問題,并提高了可訪問性:?生成的HTML具有無序列表((u和li元素)的結構;?使用CSS進行可視化格式設置;?菜單按照ARIA標準實現(xiàn)鍵盤訪問,可以使用箭頭鍵在菜單項中進行導航;?ARIA角色和屬性特性將添加到生成的HTML中。Menu控件的樣式呈現(xiàn)在頁面頂部的style塊中,而不是與呈現(xiàn)的HTML元素內聯(lián)呈現(xiàn)。如果要使用單獨的CSS文件以便于修改菜單樣式,可以將Menu控件的新的IncludeStyleBlock屬性設置為false,這樣便不會生成樣式塊。(11)用于HtmlForm控件的有效XHTML在ASP.NET3.5中,HtmlForm控件(由<formrunat=“server”>標記隱式創(chuàng)建)呈現(xiàn)的HTMLform元素同時具有name和id特性。但因為name特性在XHTML1.1中已棄用,因此該控件在ASP.NET4中不會呈現(xiàn)name特性。(12)保留控件呈現(xiàn)中的向后兼容性現(xiàn)有ASP.NET網站中的代碼可能會假定控件是以ASP.NET3.5中的方式呈現(xiàn)HTML。為避免在將該站點升級為ASP.NET4時出現(xiàn)向后兼容性問題,可以在升級站點后讓ASP.NET繼續(xù)以ASP.NET3.5中的方式生成HTML。為此,可以在ASP.NET4網站的Web.config文件中將pages元素的controlRenderingCompatibilityVersion特性設置為“3.5”,如下面的示例所示:<system.web><pagescontrolRenderingCompatibilityVersion="3.5"/></system.web>如果省略上述設置,默認值將與網站的目標ASP.NET版本相同。0.4.4動態(tài)數(shù)據(jù)動態(tài)數(shù)據(jù)是在.NETFramework3.5SP1版本中引入的,它為創(chuàng)建數(shù)據(jù)驅動應用程序提供了許多增強功能:?快速生成數(shù)據(jù)驅動網站的RAD體驗。?基于數(shù)據(jù)模型中定義的約束的自動驗證。?可以使用屬于動態(tài)數(shù)據(jù)項目中的字段模板輕松更改為GridView和DetailsView控件中的字段生成的標記。而在ASP.NET4中,動態(tài)數(shù)據(jù)的功能得到了進一步增強,主要表現(xiàn)在以下幾個方面:1)在現(xiàn)有Web應用中對單個數(shù)據(jù)綁定控件啟用動態(tài)數(shù)據(jù)。其中,對數(shù)據(jù)綁定控件啟用動態(tài)數(shù)據(jù)時,你可以獲得以下三個好處:?動態(tài)數(shù)據(jù)能讓你在運行時為數(shù)據(jù)控件中的字段提供默認值;?你可以在不創(chuàng)建和注冊數(shù)據(jù)模型的情況下與數(shù)據(jù)庫交互;?你可以不必編寫任何代碼而自動驗證用戶輸入的數(shù)據(jù)。2)用于URL和電子郵件地址的新字段模板。在ASP.NET4中,引入了兩個新的內置字段模板EmailAddress.ascx和Url.ascx,這兩個模板用于使用DataTypeAttribute特性標記為EmailAddress或Url的字段。對于EmailAddress對象,該字段顯示為使用mailto:協(xié)議創(chuàng)建的超鏈接,當用戶單擊該鏈接時,將打開用戶的電子郵件客戶端并創(chuàng)建一條主干消息;而對于Url對象,該字段顯示為普通超鏈接。下面的示例顯示了如何標記字段:[DataType(DataType.EmailAddress)]publicobjectHomeEmail{get;set;}[DataType(DataType.Url)]publicobjectWebsite{get;set;}3)使用DynamicHyperLink控件創(chuàng)建鏈接。使用新的DynamicHyperLink控件,可輕松生成指向動態(tài)數(shù)據(jù)站點中的頁面的鏈接。4)數(shù)據(jù)模型中的繼承支持。5)多對多關系支持(僅限于EntityFramework)。EntityFramework為表之間的多對多關系提供了多種支持,這些支持是通過將關系公開為Entity對象的集合實現(xiàn)的。增加了新的字段模板((MnyToMany.ascx和ManyToMany_Edit.ascx),以便為顯示和編輯多對多關系中涉及的數(shù)據(jù)提供支持。6)增加了DisplayAttribute,可以對字段顯示方式進行更多控制。其中,DisplayAttribute類可以指定用于顯示字段的更多選項,如字段顯示的順序和字段是否將用作篩選器。另外,該特性還提供對以下內容的獨立控制:GridView控件中用于標簽的名稱、DetailsView控件中使用的名稱、字段的幫助文本,以及用于字段的水?。ㄇ疤崾亲侄谓邮芪谋据斎耄?。7)增加了EnumDataTypeAttribute,用于將字段映射到枚舉。8)增強的篩選器支持。篩選支持已重新編寫為使用Web表單的新的QueryExtender功能。這樣,可以直接創(chuàng)建篩選器,而無須具備將與篩選器一起使用的數(shù)據(jù)源控件的知識。除這些擴展功能外,篩選器還變?yōu)槟0蹇丶?,允許你添加新的篩選器。最后,使用前面提到的DisplayAttribute類可以覆蓋默認篩選器,這與使用UIHint覆蓋列的默認字段模板的方法是相同的。0.4.5ASP.NETChart控件通過使用ASP.NETChart服務器控件,可以創(chuàng)建包含用于復雜統(tǒng)計分析或財務分析的簡單直觀圖表的ASP.NET應用程序。其中,Chart控件支持下列功能:1)數(shù)據(jù)系列、圖表區(qū)域、軸、圖例、標簽、標題等。2)數(shù)據(jù)綁定。3)數(shù)據(jù)操作,例如復制、拆分、合并、對齊、分組、排序、搜索和篩選。4)統(tǒng)計公式和財務公式。5)高級圖表外觀,例如三維、抗鋸齒、照明和透視。6)事件和自定義項。7)交互性和ASP.NETAJAX。8)支持AJAX內容傳遞網絡,該功能為你提供了將ASP.NETAJAX庫和jQuery腳本添加到Web應用程序的最佳方式。0.4.6MicrosoftAJAX的功能在MicrosoftAJAX中,可以更加輕松地創(chuàng)建完全基于客戶端的AJAX應用程序。其中,它主要包括下列功能:1)可以通過服務器以HTML的形式呈現(xiàn)JSON數(shù)據(jù)。2)提供客戶端模板,使你可以僅使用基于瀏覽器的代碼顯示數(shù)據(jù)。3)聲明式客戶端控件安裝和行為。4)提供客戶端DataView控件,用于創(chuàng)建動態(tài)數(shù)據(jù)驅動的UI。5)數(shù)據(jù)與HTML元素或客戶端控件之間的實時綁定。6)客戶端命令冒泡。7)WCF和WCF數(shù)據(jù)服務與客戶端腳本的完全集成,包括客戶端更改跟蹤。除了MicrosoftAJAX庫之外,ASP.NET4還與jQuery腳本庫提供很好的集成,供你更加方便地使用jQuery腳本庫進行開發(fā)。0.4.7ASP.NETMVCASP.NETMVC通過使用模型-視圖-控制器((MC)模式降低了應用程序層之間的依賴性,從而幫助Web開發(fā)人員生成易于維護的基于標準的優(yōu)秀網站。MVC還提供對頁標記的全面控制。另外,它在本質上支持測試驅動開發(fā)((TD),因而提高了可測試性。其中,ASP.NETMVC2主要在下列幾方面增強了功能:強類型Html輔助方法、模板化輔助方法、區(qū)域、異步控制器、默認值特性、基于模型驗證、客戶端驗證和Html.RenderAction方法。0.5MicrosoftVisualStudio2010集成開發(fā)環(huán)境通過前面的學習,相信你已經對MicrosoftVisualStudio2010集成開發(fā)環(huán)境有一定的了解,現(xiàn)在就來剖析一下MicrosoftVisualStudio2010集成開發(fā)環(huán)境的各個組成部分以及它們各自的功能。0.5.1解決方案資源管理器解決方案資源管理器從本質上說是一個可視化的文檔管理系統(tǒng),你可以把它看做是整個項目的大管家,如圖0-8所示。圖0-8解決方案資源管理器在這里,不僅可以查看整個項目的項目文件,還可以管理項目解決方案,并在項目解決方案下根據(jù)需要任意添加、修改、刪除子項目或者其他雜項文件等。同樣,也可以對項目下的文件進行各種操作,所有的這些操作都可以通過鼠標右鍵來完成。例如想要刪除一個文件,只需要在解決方案資源管理器里面選中這個文件,然后按Delete鍵即可。0.5.2控件工具箱控件工具箱屬于VisualStudio的一大特色,它為我們的開發(fā)提供許多有用的控件。在Web項目的開發(fā)中,利用工具箱可以不需要編寫任何代碼,只使用鼠標“拖曳”的操作方式就能夠完成Web表單的界面設計,并且這些控件都是跨瀏覽器和跨設備運行的,如圖0-9所示。圖0-9控件工具箱工具箱的內容依賴于你當前正在使用的設計器,也同樣依賴于你當前的項目類型。你可以自定義工具箱的標簽以及標簽內的項??梢杂覔魳撕烅敳縼磉x擇“RenameTab”、“AddTab”或者“DeleteTab”標簽,在工具箱的空白處單擊右鍵并選“ChooseItem”,就可以添加一個或者多個項。同時,還可以把一個項從一個標簽拖放到另一個標簽內。0.5.3服務器資源管理器服務器資源管理器提供了一個樹狀功能列表,它允許你使用當前機器上(以及網絡上的其他服務器)各種類型的服務。類似于計算機管理工具,一般使用服務器資源管理器來了解機器上可用的事件日志、消息隊列、性能計數(shù)器、系統(tǒng)服務和SQLServer數(shù)據(jù)庫,如圖0-10所示。圖0-10服務器資源管理器其實,它不僅可以讓我們快速地瀏覽服務器資源,同時也可以和這些資源交互。比如說,可以使用服務器資源管理器來創(chuàng)建一個數(shù)據(jù)庫,執(zhí)行查詢語句,并且編寫存儲過程,所有這些操作都類似于使用SQLServer提供的企業(yè)管理器的操作。如果想要了解對選定的項可進行何種操作,用鼠標右擊該項即可。0.5.4錯誤列表與任務列表錯誤列表和任務列表是同一個窗口的兩種不同表現(xiàn)形式。其中,錯誤列表提供VisualStudio通過檢測有問題的代碼而產生的出錯信息。錯誤列表以及任務列表的每一項都由一個文本描述和一個鏈接組成,這個鏈接能幫助你找到項目里面出錯程序代碼的指定行。作為VisualStuido的默認設置,當生成一個有錯誤的項目的時候,錯誤列表會自動出現(xiàn),如圖0-11所示。圖0-11錯誤列表由圖0-11可知,錯誤列表有三個選項按鈕。其中,“Error”表示程序的一些嚴重性比較高的錯誤,如果不修改這些錯誤程序將無法編譯成功;“Warnings”表示軟性錯誤,也可以看著是潛在性錯誤,比如定義了多余的在程序里面沒有用到的變量、在頁面設計的時候用到了不符合標準的HTML標簽等,這種錯誤不影響程序的編譯,但會帶來潛在的錯誤。任務列表顯示一個類似的帶to-do任務的視圖,以及你正在跟蹤的其他代碼注解??梢允褂谩癈trl+W,T”快捷鍵來打開任務列表,如圖0-12所示。圖0-12任務列表任務可以分為兩種:用戶任務和注釋。可以在任務列表頂部的下拉列表框中選擇想要看的任務。用戶任務是那些你明確添加到任務列表中的項??梢詥螕羧蝿樟斜碇械摹癈reateUserTask”圖標來創(chuàng)建用戶任務。你可以給任務一個基本的描述、優(yōu)先級以及一個對勾框來表示其是否已經完成。要移動到相應的代碼行,只需雙擊上面新的任務項即可。注意,如果刪除了注釋,這個對應的任務項也會被自動刪除。0.5.5頁面設計窗口與代碼編輯窗口在VisualStudio中,頁面設計窗口與代碼編輯窗口共享一個窗口,可以在這里設計頁面、編寫HTML代碼、編寫C#以及設計類圖等。在Web應用程序的頁面設計中,可以使用“拖曳”的方式將Web服務器控件拖曳到頁面設計窗口來完成頁面的布局設計,同時它會自動生成相應的頁面HTML代碼,如圖0-13所示。當要修改Web服務器控件的相關屬性時,只需要選中該Web服務器控件,然后在控件的屬性設置窗口就可以設置控件的屬性了。在這里還可以為控件添加相應的事件。當然,也可以通過鼠標雙擊控件的方法來為控件添加事件,如圖0-14所示。圖0-13選擇“Design”選項圖0-14控件的屬性設置窗口在圖0-13中,我們發(fā)現(xiàn)頁面設計器下面有三個按鈕:Design、Split和Source,它們各自代表什么意思呢?其實,這是VisualStudio提供的三種Web頁面的設計模式,分別適合于不同設計喜好的設計人員:1)Design模式:如圖0-13所示,它提供純頁面式的設計,頁面元素拖曳上去后就能夠馬上看到設計的效果,很適合那種不喜歡寫HTML代碼的設計人員。2)Source模式:如圖0-15所示,它提供純HTML代碼方式的設計模式,這適合于那些對HTML代碼比較熟悉的設計人員。3)Split模式:如圖0-16所示,它合并了上面兩種設計模式,讓你既能夠看頁面的設計效果又能夠看到頁面的HTML代碼。圖0-15選擇“Source”選項圖0-16選擇“Split”選項0.6本章小結在本章中,首先了解了Microsoft.NET的概念和ASP.NET語言的特點;在對ASP.NET語言發(fā)展歷程的討論里讓你充分了解ASP.NET的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論