從 ASP.NET 1.0 版開始,Web Form已成為 ASP.NET 中的核心功能。ASP.NET 4 在這方面做了許多改進,例如以下方面:
1.使用 Page.MetaKeywords 和 Page.MetaDescription 屬性設定meta標記
Page類增加了兩個屬性:MetaKeywords和MetaDescription。這兩個屬性所表示的是HTML中的meta標記。如下面的樣本所示:
<head id="Head1" runat="server">
<title>Untitled Page</title>
<meta name="keywords" content="keyword1, keyword2' />
<meta name="description" content="Description of my page" />
</head>
這兩個屬性的工作方式與Title屬性相似,可以在@Page指令中對其進行設定。
2.為各個控制項啟用檢視狀態
Control 類增加了一個新屬性:ViewStateMode。使用該屬性,可以針對頁面上未顯式啟用檢視狀態的所有控制項禁用檢視狀態。檢視狀態資料包含在頁面的HTML中,
檢視狀態資料包含在頁面的 HTML 中,將會使頁面的請求和響應延長所用時間。儲存多餘的檢視狀態將會導致效能顯著降低。在 ASP.NET 的早期版本中,可通過禁用特定控制項的檢視狀態來減輕檢視狀態對頁面效能的影響。但是有時,與為多數不需要檢視狀態的控制項禁用該狀態相比,為少數需要檢視狀態的控制項啟用該狀態更加簡便。
3.支援最近引入的瀏覽器和裝置
ASP.NET 包含一項名為“瀏覽器功能”的功能,可用於確定使用者使用的瀏覽器的功能。瀏覽器功能由儲存在 HttpRequest.Browser 屬性中的 HttpBrowserCapabilities 對象表示。有關特定瀏覽器功能的資訊由瀏覽器定義檔案定義。在 ASP.NET 4 中,這些瀏覽器定義檔案已更新為包含有關最近引入的瀏覽器和裝置(如 Google Chrome, Research in Motion BlackBerry 智能電話和 Apple iPhone)的資訊。現有的瀏覽器定義檔案也已更新。
下面的列表顯示了 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 包含一項稱為“瀏覽器功能提供者”的新功能。顧名思義,此功能可用於構建一個提供者,該提供者又可用於編寫自訂代碼以確定瀏覽器功能。
在 ASP.NET 3.5 版 Service Pack 1 中,需要在一個 XML 檔案中定義瀏覽器功能。該檔案位於電腦級檔案夾或應用程式級檔案夾中。大部分開發人員不需要自訂這些檔案,但對於需要的人員,使用提供者的方法比處理複雜的 XML 文法更為簡便。通過提供者方法可以簡化進程,方法是實施一種通用瀏覽器定義文法或包含最新瀏覽器定義的資料庫,甚至是用於此類資料庫的 Web 服務。
5.ASP.NET 4 中的路由
ASP.NET 4 增加了對使用 Web Form進行路由的內建支援。路由是 ASP.NET 3.5 SP1 引入的一項功能,通過此功能可將應用程式配置為使用對使用者和搜尋引擎有意義的 URL,這樣無需指定物理檔案名稱。使用這項功能,可以提高網站的方便使用度,並增加網站內容被搜尋引擎發現的機率。
例如,顯示應用程式中產品類別的某個頁面的 URL 如下面的樣本所示:
http://website/products.aspx?categoryid=12
通過路由功能,可以使用下面的 URL 呈現相同的資訊:
http://website/products/software
第二個 URL 使使用者瞭解將獲得的內容,並且可以顯著提高在搜尋引擎搜尋結果中的排名。
新功能包括:
PageRouteHandler 類是一個用於定義路由的簡單 HTTP 處理常式。您不必再編寫自訂路由處理常式了。
HttpRequest.RequestContext 和 Page.RouteData 屬性可方便使用者存取 URL 參數中傳遞的資訊。
RouteParameter 類便於將 URL 參數值傳遞到資料來源控制項的查詢(類似於 FormParameter)。
您不必再更改 Web.config 檔案以啟用路由了。
6.設定用戶端識別碼
伺服器控制項新增加的ClientDMode屬性可方便使用者編寫引用伺服器控制項呈現的HTML元素的用戶端指令碼。Microsoft Ajax的使用日益增多,因此需要進行此操作的情況是越來越多。例如,你可以有一個用於呈現很長的產品價目表的資料控制項,並且希望使用用戶端指令碼令Web服務在各個價格變化時對其進行調用和更新,而不重新整理整個頁面。
通常情況下,可使用document.GetElementById方法在用戶端指令碼中獲得對HTML元素的引用。你需要將引用的HTML元素的id屬性值傳遞到該方法。對於ASP.NET伺服器控制項呈現的元素,ASP.NET的早期版本可能難以實現上述操作。並非總能預測ASP.NET將產生id值,而ASP.NET也可能產生很長的id值。
ASP.NET 4增加了兩種用於產生id特性的新演算法。這些演算法可以產生更易用的用戶端指令碼的id,因為它們的可預測性更強,並且由於產生的更簡潔因而使用起來更方便。
7.在資料控制項中保持行選擇
使用GridView和ListView控制項時,使用者可以選擇一行。在ASP.NET的早期版本中,行選擇是基於頁面的行索引進行的。例如,如果選擇頁面1上的第三個項,然後移至頁面2,則會選定頁面2上的第三個項。在大多數情況下,更理想的情況是不選擇頁面2上的任何行。ASP.NET 4 支援持久化選擇,這項新功能最初僅在.NET Framework 3.5 SP1中的動態資料項目中提供。啟用此功能後,將基於行資料鍵選擇項。這意味著,如果選擇頁面1上的第三行,然後移到頁面2,則不會先定頁面2上的任何內容。當您移回頁面1時,仍將選定第三個行。與ASP.NET 早期版本中的行為相比,這種行為自然得多。目前針對所有項目中的GridView和ListView控制項支援持久化選擇。例如,您可以通過設定GridView控制項中的EnablePersistedSelection屬性啟用此功能,如下面的樣本所示:
<asp:GridView id="GridView2" runat="server" PersistedSelection="true">
</asp:GridView>
8.FormView 控制項增強功能
ASP.NET 4對ForumView控制項進行了改進,使用CSS簡化了控制項內容的樣式設定。在ASP.NET的早期版本中,FormView控制項使用項目範本呈現內容。這使得在標記中進行樣式設定十分困難,因為控制項會呈現意外的表行和表儲存格標記。FormView控制項支援ASP.NET 4中的屬性RenderOuterTable。當此屬性設定為false時(如下面的樣本所示),不會呈現表標記。這樣更容易對控制項內容應用CSS樣式。
<asp:FormView ID="FormView1" runat="server" RenderTable="false">
9.ListView 控制項增強功能
ASP.NET 3.5 中引入的 ListView 控制項具備 GridView 控制項的所有功能,同時使您可以全面控制輸出。在 ASP.NET 4 中,簡化了此控制項的使用。該控制項的早期版本要求您指定布局模板,其中包含一個具有已知 ID 的伺服器控制項。下面的標記顯示了在 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 控制項不需要布局模板。上面樣本中的標記可以替換為下面的標記:
<asp:ListView ID="ListView1" runat="server">
<ItemTemplate>
<% Eval("LastName")%>
</ItemTemplate>
</asp:ListView>
10.使用 QueryExtender 控制項篩選資料
對於建立資料驅動的網頁的開發人員,一項十分常見的任務就是篩選資料。該任務的傳統執行方法是在資料來源控制項中產生 Where 子句。這種方法可能十分複雜,而且在某些情況下,通過 Where 文法無法充分利用基礎資料庫的全部功能。
為簡化篩選操作,ASP.NET 4 中增加了一個新的 QueryExtender 控制項。可以將此控制項添加到 EntityDataSource 或 LinqDataSource 控制項以篩選這些控制項返回的資料。QueryExtender 控制項依賴於 LINQ,但您無需瞭解如何編寫 LINQ 查詢即可使用該查詢擴充程式。
QueryExtender 控制項支援多種篩選選項。下表列出了 QueryExtender 的篩選選項。
術語 |
定義 |
SearchExpression |
搜尋一個或多個欄位中的字串值,並將這些值與指定的字串值進行比較。 |
RangeExpression |
在一個或多個欄位中搜尋由一對值指定的範圍內的值。 |
PropertyExpression |
對指定的值與欄位中的屬性值進行比較。如果運算式的計算結果為 true,則返回所檢查的資料。 |
OrderByExpression |
按指定的列和排序方向對資料進行排序。 |
CustomExpression |
調用一個函數,用於定義頁面中的自訂篩選器。 |