长期以来,使用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>