在 SharePoint 2010 中创建自定义内容类型
SharePoint 2010 中的 Web 开发入门:了解如何在 SharePoint 2010 中创建自定义内容类型。
适用范围: Microsoft SharePoint Foundation 2010 | Microsoft SharePoint Server 2010 | Microsoft Visual Studio 2010
发布时间:2010 年 4 月
供稿人: Frank Rice(该链接可能指向英文页面),Microsoft Corporation
在该练习中,您将创建自定义内容类型。然后将两个字段添加到内容类型:新文本字段和网站中已存在的字段。若要完成此任务,您必须执行以下操作:
创建 SharePoint 2010 项目
在该任务中,您将在 Microsoft Visual Studio 2010 中创建空白 SharePoint 2010 项目。
创建 SharePoint 项目
-
若要启动 Visual Studio 2010,请依次单击“开始”菜单、“所有程序”、“Microsoft Visual Studio 2010”和“Microsoft Visual Studio 2010”。
-
在“文件”菜单上,指向“新建”,然后单击“项目”。
-
在“新建项目”对话框窗口中的“已安装的模板”部分,依次单击“Visual C#”、“SharePoint”和“2010”。
-
从项目项中选择“空白 SharePoint 项目”。
-
在“名称”框中,键入 CreateContentType,然后单击“确定”。
-
在 SharePoint 自定义向导中,键入要用于本练习的本地网站(例如 http://localhost/SampleWebSite)。
-
对于信任级别,请选择“部署为场解决方案”,然后单击“完成”。
创建内容类型
在该任务中,您将以功能形式创建内容类型,并添加事件接收器。
创建内容类型
-
在解决方案资源管理器中,右键单击“功能”文件夹,然后单击“添加功能”。
-
右键单击“Feature1”,然后单击“添加事件接收器”。Visual Studio 会将功能事件接收器添加到 Feature1。
-
右键单击“Feature1.EventReceiver.cs”,然后单击“查看代码”。
-
在 Feature1EventReceiver 类中,取消注释 FeatureActivated 方法。
-
在 FeatureActivated 方法中插入以下代码。
using (SPWeb spWeb = properties.Feature.Parent as SPWeb) { SPContentType newAnnouncement = spWeb .ContentTypes .Cast<SPContentType>() .FirstOrDefault(c => c.Name == "New Announcements"); if (newAnnouncement != null) { newAnnouncement.Delete(); } SPField newField = spWeb.Fields .Cast<SPField>() .FirstOrDefault(f => f.StaticName == "Team Project"); if (newField != null) { newField.Delete(); } SPContentType myContentType = new SPContentType(spWeb.ContentTypes["Announcement"], spWeb.ContentTypes, "New Announcements"); myContentType.Group = "Custom Content Types"; spWeb.Fields.Add("Team Project", SPFieldType.Text, true); SPFieldLink projFeldLink = new SPFieldLink(spWeb.Fields["Team Project"]); myContentType.FieldLinks.Add(projFeldLink); SPFieldLink companyFieldLink = new SPFieldLink(spWeb.Fields["Company"]); myContentType.FieldLinks.Add(companyFieldLink); spWeb.ContentTypes.Add(myContentType); myContentType.Update(); }
FeatureActivated 方法在启动 Feature1 时运行。此代码可用于执行以下操作:
- 删除内容类型 New Announcements 和字段 Team Project(如果存在)。
- 根据 New Announcements 内容类型创建父内容类型 Announcement。
- 创建一个文本字段(标题为 团队项目),然后将其添加到该内容类型。
- 将标题为 Company 的现有字段添加到该内容类型。
- 删除内容类型 New Announcements 和字段 Team Project(如果存在)。
-
取消注释 FeatureDeactivating 方法。
-
在 FeatureDeactivating 方法中插入以下代码。
using (SPWeb spWeb = properties.Feature.Parent as SPWeb) { SPContentType myContentType = spWeb.ContentTypes["New Announcements"]; spWeb.ContentTypes.Delete(myContentType.Id); spWeb.Fields["Team Project"].Delete(); }
FeatureDeactivating 方法在停用 Feature1 时运行。此代码可用于执行以下操作:
- 删除内容类型 New Announcements。
- 删除文本字段 Team Project。
- 删除内容类型 New Announcements。
-
在解决方案资源管理器中,右键单击“CreateContentType”,然后单击“部署”。
验证项目运行是否正常
在该任务中,您将验证内容类型和两个字段是否可用。
测试项目
-
启动 Internet Explorer,并浏览到之前指定的网站。
-
在屏幕的左上部,单击“网站操作”,然后单击“网站设置”。
-
在“库”下,单击“网站列”。
-
在“显示用户组”选项中,单击“自定义列”。
您将看到新字段 Team Project。
图 1.“团队项目”字段 -
单击“网站操作”,然后单击“网站设置”。
-
在“库”下,单击“网站内容类型”。
-
从“显示用户组”选项中选择“自定义内容类型”。
您将看到新内容类型 New Announcements。