ASP.NET 4新增功能(二) ASP.NET Web 窗體增強(qiáng)功能從 ASP.NET 1.0 版開始,Web 窗體已成為 ASP.NET 中的核心功能。ASP.NET 4 在這方面做了許多改進(jìn),例如以下方面:
1.使用 Page.MetaKeywords 和 Page.MetaDescription 屬性設(shè)置meta標(biāo)記Page類增加了兩個(gè)屬性:MetaKeywords和MetaDescription。這兩個(gè)屬性所表示的是HTML中的meta標(biāo)記。如下面的示例所示: <head id="Head1" runat="server">
<title>Untitled Page</title> <meta name="keywords" content="keyword1, keyword2' /> <meta name="description" content="Description of my page" /> </head> 這兩個(gè)屬性的工作方式與Title屬性相似,可以在@Page指令中對(duì)其進(jìn)行設(shè)置。 2.為各個(gè)控件啟用視圖狀態(tài)Control 類增加了一個(gè)新屬性:ViewStateMode。使用該屬性,可以針對(duì)頁(yè)面上未顯式啟用視圖狀態(tài)的所有控件禁用視圖狀態(tài)。視圖狀態(tài)數(shù)據(jù)包含在頁(yè)面的HTML中, 視圖狀態(tài)數(shù)據(jù)包含在頁(yè)面的 HTML 中,將會(huì)使頁(yè)面的請(qǐng)求和響應(yīng)延長(zhǎng)所用時(shí)間。存儲(chǔ)多余的視圖狀態(tài)將會(huì)導(dǎo)致性能顯著降低。在 ASP.NET 的早期版本中,可通過禁用特定控件的視圖狀態(tài)來減輕視圖狀態(tài)對(duì)頁(yè)面性能的影響。但是有時(shí),與為多數(shù)不需要視圖狀態(tài)的控件禁用該狀態(tài)相比,為少數(shù)需要視圖狀態(tài)的控件啟用該狀態(tài)更加簡(jiǎn)便。 3.支持最近引入的瀏覽器和設(shè)備ASP.NET 包含一項(xiàng)名為“瀏覽器功能”的功能,可用于確定用戶使用的瀏覽器的功能。瀏覽器功能由存儲(chǔ)在 HttpRequest.Browser 屬性中的 HttpBrowserCapabilities 對(duì)象表示。有關(guān)特定瀏覽器功能的信息由瀏覽器定義文件定義。在 ASP.NET 4 中,這些瀏覽器定義文件已更新為包含有關(guān)最近引入的瀏覽器和設(shè)備(如 Google Chrome, Research in Motion BlackBerry 智能電話和 Apple iPhone)的信息。現(xiàn)有的瀏覽器定義文件也已更新。 下面的列表顯示了 ASP.NET 4 附帶的瀏覽器定義文件: blackberry.browser chrome.browser Default.browser firefox.browser gateway.browser generic.browser ie.browser iemobile.browser iphone.browser opera.browser safari.browser 4.定義瀏覽器功能的新方式ASP.NET 4 包含一項(xiàng)稱為“瀏覽器功能提供程序”的新功能。顧名思義,此功能可用于構(gòu)建一個(gè)提供程序,該提供程序又可用于編寫自定義代碼以確定瀏覽器功能。 在 ASP.NET 3.5 版 Service Pack 1 中,需要在一個(gè) XML 文件中定義瀏覽器功能。該文件位于計(jì)算機(jī)級(jí)文件夾或應(yīng)用程序級(jí)文件夾中。大部分開發(fā)人員不需要自定義這些文件,但對(duì)于需要的人員,使用提供程序的方法比處理復(fù)雜的 XML 語法更為簡(jiǎn)便。通過提供程序方法可以簡(jiǎn)化進(jìn)程,方法是實(shí)施一種通用瀏覽器定義語法或包含最新瀏覽器定義的數(shù)據(jù)庫(kù),甚至是用于此類數(shù)據(jù)庫(kù)的 Web 服務(wù)。 5.ASP.NET 4 中的路由ASP.NET 4 增加了對(duì)使用 Web 窗體進(jìn)行路由的內(nèi)置支持。路由是 ASP.NET 3.5 SP1 引入的一項(xiàng)功能,通過此功能可將應(yīng)用程序配置為使用對(duì)用戶和搜索引擎有意義的 URL,這樣無需指定物理文件名。使用這項(xiàng)功能,可以提高站點(diǎn)的用戶友好度,并增加站點(diǎn)內(nèi)容被搜索引擎發(fā)現(xiàn)的概率。 例如,顯示應(yīng)用程序中產(chǎn)品類別的某個(gè)頁(yè)面的 URL 如下面的示例所示: http://website/products.aspx?categoryid=12 通過路由功能,可以使用下面的 URL 呈現(xiàn)相同的信息: http://website/products/software 第二個(gè) URL 使用戶了解將獲得的內(nèi)容,并且可以顯著提高在搜索引擎搜索結(jié)果中的排名。 新功能包括:
6.設(shè)置客戶端 ID 服務(wù)器控件新增加的ClientDMode屬性可方便用戶編寫引用服務(wù)器控件呈現(xiàn)的HTML元素的客戶端腳本。Microsoft Ajax的使用日益增多,因此需要進(jìn)行此操作的情況是越來越多。例如,你可以有一個(gè)用于呈現(xiàn)很長(zhǎng)的產(chǎn)品價(jià)目表的數(shù)據(jù)控件,并且希望使用客戶端腳本令Web服務(wù)在各個(gè)價(jià)格變化時(shí)對(duì)其進(jìn)行調(diào)用和更新,而不刷新整個(gè)頁(yè)面。 通常情況下,可使用document.GetElementById方法在客戶端腳本中獲得對(duì)HTML元素的引用。你需要將引用的HTML元素的id屬性值傳遞到該方法。對(duì)于ASP.NET服務(wù)器控件呈現(xiàn)的元素,ASP.NET的早期版本可能難以實(shí)現(xiàn)上述操作。并非總能預(yù)測(cè)ASP.NET將生成id值,而ASP.NET也可能生成很長(zhǎng)的id值。 ASP.NET 4增加了兩種用于生成id特性的新算法。這些算法可以生成更易用的客戶端腳本的id,因?yàn)樗鼈兊目深A(yù)測(cè)性更強(qiáng),并且由于生成的更簡(jiǎn)潔因而使用起來更方便。 7.在數(shù)據(jù)控件中保持行選擇使用GridView和ListView控件時(shí),用戶可以選擇一行。在ASP.NET的早期版本中,行選擇是基于頁(yè)面的行索引進(jìn)行的。例如,如果選擇頁(yè)面1上的第三個(gè)項(xiàng),然后移至頁(yè)面2,則會(huì)選定頁(yè)面2上的第三個(gè)項(xiàng)。在大多數(shù)情況下,更理想的情況是不選擇頁(yè)面2上的任何行。ASP.NET 4 支持持久化選擇,這項(xiàng)新功能最初僅在.NET Framework 3.5 SP1中的動(dòng)態(tài)數(shù)據(jù)項(xiàng)目中提供。啟用此功能后,將基于行數(shù)據(jù)鍵選擇項(xiàng)。這意味著,如果選擇頁(yè)面1上的第三行,然后移到頁(yè)面2,則不會(huì)先定頁(yè)面2上的任何內(nèi)容。當(dāng)您移回頁(yè)面1時(shí),仍將選定第三個(gè)行。與ASP.NET 早期版本中的行為相比,這種行為自然得多。目前針對(duì)所有項(xiàng)目中的GridView和ListView控件支持持久化選擇。例如,您可以通過設(shè)置GridView控件中的EnablePersistedSelection屬性啟用此功能,如下面的示例所示: <asp:GridView id="GridView2" runat="server" PersistedSelection="true"> ASP.NET 4對(duì)ForumView控件進(jìn)行了改進(jìn),使用CSS簡(jiǎn)化了控件內(nèi)容的樣式設(shè)置。在ASP.NET的早期版本中,F(xiàn)ormView控件使用項(xiàng)模板呈現(xiàn)內(nèi)容。這使得在標(biāo)記中進(jìn)行樣式設(shè)置十分困難,因?yàn)榭丶?huì)呈現(xiàn)意外的表行和表單元格標(biāo)記。FormView控件支持ASP.NET 4中的屬性RenderOuterTable。當(dāng)此屬性設(shè)置為false時(shí)(如下面的示例所示),不會(huì)呈現(xiàn)表標(biāo)記。這樣更容易對(duì)控件內(nèi)容應(yīng)用CSS樣式。 <asp:FormView ID="FormView1" runat="server" RenderTable="false"> 9.ListView 控件增強(qiáng)功能ASP.NET 3.5 中引入的 ListView 控件具備 GridView 控件的所有功能,同時(shí)使您可以全面控制輸出。在 ASP.NET 4 中,簡(jiǎn)化了此控件的使用。該控件的早期版本要求您指定布局模板,其中包含一個(gè)具有已知 ID 的服務(wù)器控件。下面的標(biāo)記顯示了在 ASP.NET 3.5 中使用 ListView 控件的典型示例。 <asp:ListView ID="ListView1" runat="server"> 在 ASP.NET 4 中,ListView 控件不需要布局模板。上面示例中的標(biāo)記可以替換為下面的標(biāo)記: <asp:ListView ID="ListView1" runat="server"> 10.使用 QueryExtender 控件篩選數(shù)據(jù)對(duì)于創(chuàng)建數(shù)據(jù)驅(qū)動(dòng)的網(wǎng)頁(yè)的開發(fā)人員,一項(xiàng)十分常見的任務(wù)就是篩選數(shù)據(jù)。該任務(wù)的傳統(tǒng)執(zhí)行方法是在數(shù)據(jù)源控件中生成 Where 子句。這種方法可能十分復(fù)雜,而且在某些情況下,通過 Where 語法無法充分利用基礎(chǔ)數(shù)據(jù)庫(kù)的全部功能。 為簡(jiǎn)化篩選操作,ASP.NET 4 中增加了一個(gè)新的 QueryExtender 控件??梢詫⒋丝丶砑拥?EntityDataSource 或 LinqDataSource 控件以篩選這些控件返回的數(shù)據(jù)。QueryExtender 控件依賴于 LINQ,但您無需了解如何編寫 LINQ 查詢即可使用該查詢擴(kuò)展程序。 QueryExtender 控件支持多種篩選選項(xiàng)。下表列出了 QueryExtender 的篩選選項(xiàng)。
|
|