小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

ASP.NET 4新增功能(二) ASP.NET Web 窗體增強(qiáng)功能 - longgel...

 boxls 2010-06-07

ASP.NET 4新增功能(二) ASP.NET Web 窗體增強(qiáng)功能

從 ASP.NET 1.0 版開始,Web 窗體已成為 ASP.NET 中的核心功能。ASP.NET 4 在這方面做了許多改進(jìn),例如以下方面:

  • 可以設(shè)置 meta 標(biāo)記。

  • 加強(qiáng)對(duì)視圖狀態(tài)的控制。

  • 支持最近引入的瀏覽器和設(shè)備。

  • 可以更方便地使用瀏覽器的功能。

  • 支持對(duì) Web 窗體使用 ASP.NET 路由。

  • 加強(qiáng)對(duì)生成的 ID 的控制。

  • 可以將所選行保留在數(shù)據(jù)控件中。

  • 加強(qiáng)對(duì) FormView 和 ListView 控件中呈現(xiàn)的 HTML 的控制。

  • 支持?jǐn)?shù)據(jù)源控件的篩選。

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é)果中的排名。

新功能包括:

  • PageRouteHandler 類是一個(gè)用于定義路由的簡(jiǎn)單 HTTP 處理程序。您不必再編寫自定義路由處理程序了。

  • HttpRequest.RequestContext 和 Page.RouteData 屬性可方便用戶訪問 URL 參數(shù)中傳遞的信息。

    • The RouteUrl 表達(dá)式提供了在標(biāo)記中創(chuàng)建路由 URL 的簡(jiǎn)單方法。

    • The RouteValue 表達(dá)式提供了提取標(biāo)記中的 URL 參數(shù)值的簡(jiǎn)單方法。

  • RouteParameter 類便于將 URL 參數(shù)值傳遞到數(shù)據(jù)源控件的查詢(類似于 FormParameter)。

  • 您不必再更改 Web.config 文件以啟用路由了。

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:GridView>
8.FormView 控件增強(qiáng)功能

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">
<LayoutTemplate>
<asp:PlaceHolder ID="ItemPlaceHolder" runat="server"></asp:PlaceHolder>
</LayoutTemplate>
<ItemTemplate>
<% Eval("LastName")%>
</ItemTemplate>
</asp:ListView>

在 ASP.NET 4 中,ListView 控件不需要布局模板。上面示例中的標(biāo)記可以替換為下面的標(biāo)記:

<asp:ListView ID="ListView1" runat="server">
<ItemTemplate>
<% Eval("LastName")%>
</ItemTemplate>
</asp:ListView>
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)。

術(shù)語

定義

SearchExpression

搜索一個(gè)或多個(gè)字段中的字符串值,并將這些值與指定的字符串值進(jìn)行比較。

RangeExpression

在一個(gè)或多個(gè)字段中搜索由一對(duì)值指定的范圍內(nèi)的值。

PropertyExpression

對(duì)指定的值與字段中的屬性值進(jìn)行比較。如果表達(dá)式的計(jì)算結(jié)果為 true,則返回所檢查的數(shù)據(jù)。

OrderByExpression

按指定的列和排序方向?qū)?shù)據(jù)進(jìn)行排序。

CustomExpression

調(diào)用一個(gè)函數(shù),用于定義頁(yè)面中的自定義篩選器。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多