ASP.NET Web 服务器控件模板

更新:2007 年 11 月

大多数 Web 服务器控件具有默认的布局和外观,但是您可以通过设置属性或使用样式来操纵它们。部分 Web 服务器控件还允许您使用模板来自定义其外观。

模板是一组 HTML 元素和控件,它们构成控件特定部分的布局。例如,在 DataList Web 服务器控件中,您可以使用 HTML 元素和控件的组合来创建列表中每行的布局。同样,GridView Web 服务器控件对网格中的每行都具有一个默认的外观。但您可以通过为各列定义不同的模板,来自定义网格的外观。

h59db326.alert_note(zh-cn,VS.90).gif说明:

模板不同于样式。模板定义控件某一部分的内容,例如 DataList 控件中某行的内容。而样式指定元素的外观,例如颜色、字体等。样式可以作为整体应用于控件(例如,设置 GridView 控件的字体)和模板项。

模板由 HTML 和嵌入的服务器控件组成。当控件在 ASP.NET 网页中运行时,控件基础结构呈现模板的内容,而不是控件的默认 HTML。

哪些控件支持模板?

并非所有 Web 服务器控件都支持模板。在大多数情况下,复杂的控件支持模板。这些控件包括 GridViewDataListRepeaterFormViewDetailsViewLogin 及其他控件。

每一控件支持的一组模板略有不同,这些模板指定控件的不同部分的布局,例如标题、脚注、项和所选项。您可以为上述任一或全部对象指定模板,具体情况取决于您要自定义哪一对象。在 GridView 控件中,您可以为列(而非行)指定模板。

下表概述了支持模板的 Web 服务器控件。

控件

模板

ChangePassword

  • ChangePasswordTemplate

  • SuccessTemplate

CompleteWizardStep

  • ContentTemplate

  • CustomNavigationTemplate

CreateUserWizard

  • HeaderTemplate

  • SideBarTemplate

  • StartNavigationTemplate

  • StepNavigation

  • FinishNavigation

CreateUserWizardStep

  • ContentTemplate

  • CustomNavigationTemplate

DataList

  • HeaderTemplate

  • FooterTemplate

  • ItemTemplate

  • AlternatingItemTemplate

  • SeparatorTemplate

  • SelectedItemTemplate

  • EditItemTemplate

DetailsView

  • HeaderTemplate

  • FooterTemplate

  • PagerTemplate

  • EmptyDataTemplate

FormView

  • ItemTemplate

  • EditItemTemplate

  • InsertItemTemplate

  • HeaderTemplate

  • FooterTemplate

  • PagerTemplate

  • EmptyDataTemplate

GridView

  • PagerTemplate

  • EmptyDataTemplate

ListView

  • LayoutTemplate

  • ItemTemplate

  • ItemSeparatorTemplate

  • GroupTemplate

  • GroupSeparatorTemplate

  • EmptyItemTemplate

  • EmptyDataTemplate

  • SelectedItemTemplate

  • AlternatingItemTemplate

  • EditItemTemplate

  • InsertItemTemplate

Login

  • LayoutTemplate

LoginView

  • AnonymousTemplate

  • LoggedInTemplate

Menu

  • DynamicTemplate

  • StaticTemplate

PasswordRecovery

  • QuestionTemplate

  • SuccessTemplate

  • UserNameTemplate

Repeater

  • HeaderTemplate

  • FooterTemplate

  • ItemTemplate

  • AlternatingItemTemplate

  • SeparatorTemplate

SiteMapPath

  • CurrentNodeTemplate

  • RootNodeTemplate

  • NodeTemplate

  • PathSeparatorTemplate

TemplatePagerField

  • PageTemplate

UpdatePanel

  • ContentTemplate

UpdateProgress

  • ProgressTemplate

Wizard

  • FinishNavigationTemplate

  • HeaderTemplate

  • StartNavigationTemplate

  • StepNavigationTemplate

  • SideBarTemplate

创建模板

可以直接在 .aspx 文件中创建模板。模板创建为 XML 声明。下面的示例演示如何使用 DataList 控件中的模板来显示一个包含雇员姓名、电话号码和电子邮件地址的列表。在使用数据绑定控件的 ItemTemplate 中指定雇员信息的布局。

h59db326.alert_note(zh-cn,VS.90).gif说明:

如果您使用的是可视化设计器(如 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 浏览器上。

请参见

概念

ASP.NET Web 服务器控件和 CSS 样式

其他资源

通过 ASP.NET 访问数据