上次修改时间: 2010年7月7日
适用范围: SharePoint Foundation 2010
每个列表类型通常都有一组设置列表时设置的显示、编辑和新建表单 ASPX 页(DispForm.aspx、EditForm.aspx 和 NewForm.aspx)。这些 ASPX 页设置到"内容空间"中。换句话说,它们不位于 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS 中,且不通过 /_layouts 虚拟目录操作。对于文档库,这些页在列表中称为 forms 的隐藏子文件夹内设置。对于其他 SharePoint 列表,这些页在列表根文件夹下设置。这些 ASPX 页中的任一页都包含一个用于呈现表单的 Microsoft.SharePoint.WebPartPages.ListFormWebPart 对象。
Microsoft SharePoint Foundation 2010 使用 Microsoft ASP.NET 显示表单。每个表单逻辑上由一组控件(例如,工具栏控件)组成。一个称为迭代器 (Microsoft.SharePoint.WebControls.ListFieldIterator) 的特殊控件用于循环访问列表字段集合,并将每个字段添加到表单中。
自定义表单模板的选项
在以前版本的 SharePoint Foundation 中,通常通过修改列表的 Schema.xml 文件中的表单定义来自定义列表项表单。Form 元素包含特定类型表单的呈现详细信息,包括定义要插入页面的 HTML 和脚本的协作应用程序标记语言 (CAML)子元素。SharePoint Foundation 使用 Microsoft ASP.NET 控件模板中内置的模板功能。
备注
如果将 Form 元素的 UseLegacyForm 属性设置为 TRUE,您仍可以通过 Schema.xml 应用自定义表单定义,但建议您使用 ASP.NET 控件。
尽管表单仍可以在 Schema.xml 中定义,但是现在您可以利用通过 ASP.NET 控件模板提供的丰富功能来修改表单。控件模板中混合有 HTML 元素和子控件,并将 HTML 插入包含页或控件。通过创建控件模板的层次结构,您可以有效地为 Web 应用程序创建继承模型,从而更有效地重用代码。
通过自定义表单模板,您可以修改列表项表单的呈现方式。在列表定义的 Schema.xml 文件中,您可以通过 Template 属性为每个列表类型指定用于呈现表单的控件模板的 ID。您必须为每个要在其中实现自定义模板的所有表单指定 Template 属性,自定义模板可以是同一模板,也可以是不同的模板。如果不为表单指定自定义模板,则 SharePoint Foundation 默认情况下将实现默认模板。自定义控件模板必须在位于 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\CONTROLTEMPLATES 下的 .ascx 文件中定义。有关如何使用 Microsoft Visual Studio 创建用于 SharePoint Foundation 的用户控件的信息,请参阅如何:为 SharePoint 应用程序页或 Web 部件创建用户控件。
![]() |
---|
替代默认 SharePoint Foundation 模板会更改表单在整个服务器场中的行为,并会在您更新版本时导致表单无法具有默认模板行为。请创建自己的使用自定义表单模板的列表模板以实现自定义行为。 |
举例来说,您可以覆盖所有调查列表项表单的呈现方式。位于 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\FEATURES\SurveysList\Survey\Schema.xml 中的调查列表定义使用 Template 属性将 ListForm 指定为用于显示项目表单的模板,将 SurveyForm 模板指定为用于编辑和新建项目表单。这意味着存在位于 \ControlTemplates 文件夹中的、其 ID 等于 ListForm 和 SurveyForm 的控件模板,您可以通过覆盖这些模板来全局替换用于调查列表项表单的默认表单模板。在自定义 .ascx 文件中,定义具有相同 ID 的自定义模板。
备注
只能使用一个 ID 等于 ListForm 或 SurveyForm 模板,因此请谨慎地使用此可扩展性功能。不支持为自定义模板使用重复的 ID,这样可能导致不可预知的结果。
也可以按内容类型注册自定义表单模板。如果您拥有一种特定内容类型,可以为该内容类型声明用于替代文档库中默认使用的标准文档库表单的自定义表单。有关如何为内容类型声明自定义表单的信息,请参阅 FormTemplates 架构概述。
支持其他表单显示方式。不能从列表表单页中移除现有 ListFormWebPart 控件,但是可以隐藏该控件。然后,可以添加 DataFormWebPart 对象并使用 XSLT 呈现项目表单。也可以将内容类型的表单页 URL(DisplayFormUrl、EditFormUrl 或 NewFormUrl 属性)设置为将用户重定向到自定义表单页。另外,可以使用 Microsoft.SharePoint.WebControls.SPDataSource 控件将表单绑定到纯文本 ASP.NET 控件以及更新数据。
![]() |
---|
尽管可以将 Web 部件添加到列表项的"显示"、"编辑"和"新建"表单(DispForm.aspx、EditForm.aspx 和 NewForm.aspx)中,但不推荐或不支持在 SharePoint Foundation 中执行此操作。支持将 Web 部件添加到列表视图页 (AllItems.aspx) 中。 |