在 SharePoint 2010 中创建自定义内容类型

SharePoint 快速入门横幅

SharePoint 2010 中的 Web 开发入门:了解如何在 SharePoint 2010 中创建自定义内容类型。

上次修改时间: 2011年1月12日

适用范围: SharePoint Foundation 2010 | SharePoint Server 2010 | Visual Studio | Visual Studio 2010

本文内容
创建 SharePoint 2010 项目
创建内容类型
验证项目运行是否正常
后续步骤

在该练习中,您将创建自定义内容类型。然后将两个字段添加到内容类型:新文本字段和网站中已存在的字段。若要完成此任务,您必须执行以下操作:

  • 创建 SharePoint 2010 项目

  • 创建内容类型

  • 验证项目运行是否正常

创建 SharePoint 2010 项目

在该任务中,您将在 Microsoft Visual Studio 2010 中创建空白 SharePoint 2010 项目。

创建 SharePoint 项目

  1. 若要启动 Visual Studio 2010,请依次单击"开始"菜单、"所有程序"、"Microsoft Visual Studio 2010"和"Microsoft Visual Studio 2010"。

  2. 在"文件"菜单上,指向"新建",然后单击"项目"。

  3. 在"新建项目"对话框窗口中的"已安装的模板"部分,依次单击"Visual C#"、"SharePoint"和"2010"。

  4. 从项目项中选择"空白 SharePoint 项目"。

  5. 在"名称"框中,键入 CreateContentType,然后单击"确定"。

  6. 在 SharePoint 自定义向导中,键入要用于本练习的本地网站(例如 https://localhost/SampleWebSite)。

  7. 对于信任级别,请选择"部署为场解决方案",然后单击"完成"。

创建内容类型

在该任务中,您将以功能形式创建内容类型,并添加事件接收器。

创建内容类型

  1. 在解决方案资源管理器中,右键单击"功能"文件夹,然后单击"添加功能"。

  2. 右键单击"Feature1",然后单击"添加事件接收器"。Visual Studio 会将功能事件接收器添加到 Feature1。

  3. 右键单击"Feature1.EventReceiver.cs",然后单击"查看代码"。

  4. 在 Feature1EventReceiver 类中,取消注释 FeatureActivated 方法。

  5. 在 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 的现有字段添加到该内容类型。

  6. 取消注释 FeatureDeactivating 方法。

  7. 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。

  8. 在解决方案资源管理器中,右键单击"CreateContentType",然后单击"部署"。

验证项目运行是否正常

在该任务中,您将验证内容类型和两个字段是否可用。

测试项目

  1. 启动 Internet Explorer,并浏览到之前指定的网站。

  2. 在屏幕的左上部,单击"网站操作",然后单击"网站设置"。

  3. 在"库"下,单击"网站列"。

  4. 在"显示用户组"选项中,单击"自定义列"。

    您将看到新字段 Team Project。

    图 1."团队项目"字段

    "团队项目"字段

  5. 单击"网站操作",然后单击"网站设置"。

  6. 在"库"下,单击"网站内容类型"。

  7. 从"显示用户组"选项中选择"自定义内容类型"。

    您将看到新内容类型 New Announcements。

    图 2."新建通知"内容类型

    新建通知内容类型

后续步骤