ASP.NET Web 服务器控件模板
更新:2007 年 11 月
大多数 Web 服务器控件具有默认的布局和外观,但是您可以通过设置属性或使用样式来操纵它们。部分 Web 服务器控件还允许您使用模板来自定义其外观。
模板是一组 HTML 元素和控件,它们构成控件特定部分的布局。例如,在 DataList Web 服务器控件中,您可以使用 HTML 元素和控件的组合来创建列表中每行的布局。同样,GridView Web 服务器控件对网格中的每行都具有一个默认的外观。但您可以通过为各列定义不同的模板,来自定义网格的外观。
说明: |
---|
模板不同于样式。模板定义控件某一部分的内容,例如 DataList 控件中某行的内容。而样式指定元素的外观,例如颜色、字体等。样式可以作为整体应用于控件(例如,设置 GridView 控件的字体)和模板项。 |
模板由 HTML 和嵌入的服务器控件组成。当控件在 ASP.NET 网页中运行时,控件基础结构呈现模板的内容,而不是控件的默认 HTML。
哪些控件支持模板?
并非所有 Web 服务器控件都支持模板。在大多数情况下,复杂的控件支持模板。这些控件包括 GridView 和 DataList、Repeater、FormView、DetailsView、Login 及其他控件。
每一控件支持的一组模板略有不同,这些模板指定控件的不同部分的布局,例如标题、脚注、项和所选项。您可以为上述任一或全部对象指定模板,具体情况取决于您要自定义哪一对象。在 GridView 控件中,您可以为列(而非行)指定模板。
下表概述了支持模板的 Web 服务器控件。
控件 |
模板 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
创建模板
可以直接在 .aspx 文件中创建模板。模板创建为 XML 声明。下面的示例演示如何使用 DataList 控件中的模板来显示一个包含雇员姓名、电话号码和电子邮件地址的列表。在使用数据绑定控件的 ItemTemplate 中指定雇员信息的布局。
说明: |
---|
如果您使用的是可视化设计器(如 Visual Studio 2005),则通常可以使用可视化工具创建和编辑模板。有关更多信息,请参见如何:使用设计器创建 Web 服务器控件模板。 |
<asp:datalist id="DataList1" runat="server">
<HeaderTemplate>
Employee List
</HeaderTemplate>
<ItemTemplate>
<asp:label id="Label1" runat="server"
Text='<%# DataBinder.Eval(Container, "DataItem.EmployeeName")%>'></asp:label>
<asp:label id="Label2" runat="server"
Text='<%# DataBinder.Eval(Container, "DataItem.PhoneNumber")%>'></asp:label>
<asp:Hyperlink id="Hyperlink1" runat="server"
Text='<%# DataBinder.Eval(Container, "DataItem.Email") %>'
NavigateURL='<%# DataBinder.Eval(Container, "DataItem.Link") %>'>
</asp:Hyperlink>
</ItemTemplate>
</asp:datalist>
<asp:datalist id="DataList1" runat="server">
<HeaderTemplate>
Employee List
</HeaderTemplate>
<ItemTemplate>
<asp:label id="Label1" runat="server"
Text='<%# DataBinder.Eval(Container, "DataItem.EmployeeName")%>'></asp:label>
<asp:label id="Label2" runat="server"
Text='<%# DataBinder.Eval(Container, "DataItem.PhoneNumber")%>'></asp:label>
<asp:Hyperlink id="Hyperlink1" runat="server"
Text='<%# DataBinder.Eval(Container, "DataItem.Email") %>'
NavigateURL='<%# DataBinder.Eval(Container, "DataItem.Link") %>'>
</asp:Hyperlink>
</ItemTemplate>
</asp:datalist>
使用模板
模板控件仅根据需要创建其模板内容的实例。这意味着当发生页加载事件时,可能无法创建模板中控件的实例。此行为会影响模板内控件的使用方式;您不能假定加载页时已创建了模板内的控件实例。
嵌套模板和嵌套主文件不呈现在 Visual Web Developer 或 Visual Studio 2005 的“设计”视图中。但嵌套正确呈现在 Web 浏览器上。