長期以來,使用Web控件的開發者都欣賞這些控件所具有的高生產力,但在控 制它們生成的標記方面卻付出了一定的代價。例如,許多ASP.NET控件會自動地使 用元素來包裝它們的內容,原因是為了方便布局或樣式控制。然而,這種行為卻 與過去幾年中不斷發展的網絡標准相違背;這些標准支持使用更清潔和更簡潔的 HTML標記,而建議節約使用<table>標記;同時,它們提倡應當盡可能使用 層疊樣式表(CSS)來實現網頁的布局和造型。此外,<table>元素和其他自 動添加的內容使得使用CSS來修飾Web控件和從客戶端使用這些控件更加困難。
ASP.NET 4.0版本的目的之一就是讓Web窗體開發人員更好地控制由Web控件呈 現的標記。為此,ASP.NET 4.0中的許多Web控件都包括了一些特定屬性,允許頁 面開發人員指示控件不生成無關的標記或者不僅僅使用<table>元素作為外 層包裝標記。
本文將著重探討ASP.NET 4.0在數據Web控件方面的一系列改進特征。正如你將 看到,這些增強功能能夠使開發人員能夠更好地控制在客戶端浏覽器上最終呈現 的標記。
1、禁止模板控件生成外層表格元素
在ASP.NET 3.5中,有若干使用(或可能使用)模板的Web控件會自動使用一個元 素封裝呈現的模板內容。具有此行為的一個這樣的控件便是FormView控件。下面 ,我們看一下FormView控件如何使用一個元素封裝輸出內容的例子。
首先,讓我們構造一個FormView控件,我們想使用它來顯示Northwind數據庫 中的Categories表格中的一個特定類別的產品名稱及描述信息。為此,這個 FormView控件需要提供一個包括CategoryName和Description字段的ItemTemplate 模板元素。下面的聲明標記正是創建了這樣的一個FormView:
<asp:FormView runat="server" ...>
<ItemTemplate>
<b><%# Eval("CategoryName") %></b><br />
<%# Eval("Description") %>'
</ItemTemplate>
</asp:FormView>
此外,我們不妨設想這個FormView控件綁定到一個返回有關飲料類信息的數據 源控件。通過浏覽器浏覽時,FormView控件將生成下列HTML代碼內容:
<table cellspacing="0" id="ContentPlaceHolder1" style="border-collapse:collapse;">
<tr>
<td colspan="2">
<b>Beverages</b><br />
Soft drinks, coffees, teas, beers, and ales'
</td>
</tr>
</table>