![SharePoint Tutorial](/sharepoint/images/sharepoint-mini-logo.jpg)
- SharePoint 教程
- SharePoint - 首页
- SharePoint - 概述
- SharePoint - 类型
- SharePoint - 功能
- SharePoint - 设置环境
- SharePoint - 创建网站集
- SharePoint - API
- SharePoint - 中心管理
- SharePoint - 应用模型
- SharePoint - 集成选项
- SharePoint - 开发工具
- SharePoint - 列表功能
- 其他列表功能
- SharePoint - 自定义列表
- SharePoint - 库
- SharePoint - Web 部件
- 站点列和内容类型
- SharePoint - 数据
- SharePoint - 服务器对象模型
- SharePoint - 客户端对象模型
- SharePoint - REST API
- SharePoint - 功能和元素
- SharePoint - 功能/事件接收器
- SharePoint - Azure 平台
- SharePoint - 打包和部署
- SharePoint - 沙箱解决方案
- SharePoint - 应用
- SharePoint 有用资源
- SharePoint 快速指南
- SharePoint - 资源
- SharePoint - 讨论
SharePoint 快速指南
SharePoint - 概述
本教程将介绍如何开始 SharePoint 开发。Microsoft SharePoint 是一个基于浏览器的协作、文档管理平台和内容管理系统。完成本教程后,您将更好地理解 SharePoint 是什么,以及 SharePoint 的高级功能领域和功能。
什么是 SharePoint
SharePoint 是一个支持协作和内容管理系统的平台。它是一个基于 Web 的中心门户。使用 SharePoint,您可以管理您同事和您自己的文档、社交活动、数据和信息。
它允许小组设置一个集中的、受密码保护的空间来共享文档。
文档可以存储、下载和编辑,然后上传以继续共享。
SharePoint 提供如此广泛的功能,以至于任何一个人都很难精通所有工作负载。
让我们了解一下我们可以用 SharePoint 做些什么。它分为三个独立的领域:
![SharePoint Areas](/sharepoint/images/sharepoint_areas.jpg)
协作
术语“协作”包含 SharePoint 的一个非常强大的主题。这意味着通过不同类型的协作将人们聚集在一起,例如企业内容管理、Web 内容管理、社交计算、人员及其技能的可发现性。
在 SharePoint 2013 中,协作是通过应用管理的。
开发人员可以扩展、自定义或构建他们自己的 SharePoint 应用,以及管理 SharePoint 上的协作。
互操作性
SharePoint 也是关于通过互操作性将这种协作结合在一起,例如:
Office 和基于 Web 的文档集成。
构建和部署安全且自定义的解决方案的能力,这些解决方案将业务线数据与 SharePoint 和 Office 集成。
与更广泛的 Web 技术集成,或将应用程序部署到云。
平台
SharePoint 也是一个平台,它不仅支持互操作性和协作,还支持可扩展性,这得益于丰富的对象模型、一套可靠的开发工具和不断壮大的开发者社区。
关键范式转变之一是 SharePoint 中云的概念。
云引入了新的应用模型,例如:
开发、部署和托管 SharePoint 应用程序的新方法。
通过 OAuth 的新身份验证形式。
使用 OData 和 REST 的新数据互操作性方法。
SharePoint - 类型
在本章中,我们将介绍开始使用 SharePoint 的不同类型和版本。
主要有三种安装和使用 SharePoint 的方法:
- SharePoint Foundation
- SharePoint Server
- Office 365
前两个选项是 SharePoint 本地部署,而 Office 365 已成为 SharePoint 的第三个完全基于云的托管模型。
SharePoint Foundation
SharePoint Foundation 是需要安全、可管理的基于 Web 的协作平台的组织的基本解决方案。SharePoint Foundation 提供了包含在 SharePoint 中的基本协作功能。
SharePoint Foundation 以免费的可下载安装程序的形式提供,它代表了 SharePoint 的基础部分。
它包括许多功能,例如安全性和管理、用户和团队网站协作以及许多应用(例如文档库和列表)。
从本质上讲,它提供了一组基线功能,使您可以开始使用和开发 SharePoint。
SharePoint Foundation 需要一些功能来构建组织内的标准协作和沟通解决方案。SharePoint Foundation 的主要功能围绕文档管理和协作。
SharePoint Foundation 的关键功能
以下是导致其在企业中广泛应用的一些主要功能。
有效的文档和任务协作 - 团队网站提供对中心位置信息的访问。
减少实施和部署资源 - SharePoint Foundation 可作为免费下载提供给 Windows Server 客户,通过它可以大大减少实施时间和成本。
更好地控制组织重要的业务数据 - SharePoint Foundation 还提供数据和信息管理以及安全性的功能。
拥抱 Web 进行协作 - 通过扩展和自定义 SharePoint Foundation
简而言之,SharePoint Foundation 代表了 SharePoint 的核心内容存储和协作功能。对于希望提高在安全、易用、协作的工作空间中相互协作能力的团队和小组织来说,它是理想的版本。
SharePoint Server
SharePoint Server 提供了大量功能,这些功能扩展了 SharePoint Foundation 中提供的功能。它提供了更丰富、更高级的功能集合,您可以将其用于组织的解决方案。
SharePoint Server 的关键功能
以下列出了其中一些附加功能:
高级搜索 - 服务器版本中提供的搜索功能和功能提供了更大的灵活性。它们允许自定义搜索结果页,您可以使用自定义搜索 Web 部件对其进行配置。
Web 内容管理 - SharePoint Server 支持互联网的 Web 内容创建和发布。
企业服务 - 这些服务为您提供了一种方法,可以使用 Office 产品系列中可用的工具快速轻松地构建自定义解决方案。
业务连接服务 - 业务连接服务 (BCS) 使您可以连接到这些外部数据源,并通过 Web 部件、用户配置文件或 SharePoint 列表显示业务数据。
社交网络和计算 - 社交网络无处不在,并且已成为许多解决方案的预期功能集。
记录管理 - SharePoint Server 为整个生命周期中的内容管理提供了出色的支持。
Office 365
Office 365 已成为 SharePoint 的第三个完全基于云的托管模型。它是您在自己的本地数据中心托管自己的场地的替代选项。
Office 365 的关键功能
通过 Office 365 许可 SharePoint Online 的选项基于诸如您要添加的用户数量、您需要存储的数据量以及您需要使用的功能等因素。
它也成为一个您可以开发丰富应用程序(作为 SharePoint 托管的和云托管的应用程序)并在无需管理本地基础设施成本的情况下进行扩展的好地方。
它并不具备与 SharePoint Server 完全相同的服务和功能,但它确实具有一些强大的开发能力。
有一些 .NET 应用程序,您可以使用 C# 或 Visual Basic 构建它们,然后作为 .WSP 或 .APP 部署到 SharePoint。您还可以部署更轻量级的应用程序,例如 HTML5 和 JavaScript 应用程序。
作为开发人员,您可以自定义任何 SharePoint 版本,无论是 SharePoint Foundation、Server 还是 Office 365。
SharePoint - 功能
在本章中,我们将介绍内置于 SharePoint 的默认功能集(或功能),这些功能使您可以利用平台而无需进行任何开发。
在构建应用时,您可以使用或扩展这些核心功能。Microsoft 从历史上将这些功能称为工作负载。
这些工作负载提供了一种谈论 SharePoint 的不同功能组合的方式。您应该将这些工作负载视为不仅代表一组相关的核心应用程序,而且也视为应用程序开发的机会。
以下是 SharePoint 2010 中添加的工作负载:
站点 - 代表可供使用和这些站点内功能的不同类型的站点。
社区 - 代表社区和社交功能,例如博客和 Wiki。
内容 - 代表核心企业内容管理功能。
搜索 - 代表搜索驱动功能。
见解 - 代表业务智能功能,例如 KPI。
复合 - 代表例如使用业务连接服务集成外部应用程序的能力。
SharePoint 2013 – 功能
在 SharePoint 2013 中,Microsoft 扩展了功能以添加更多功能并提供更紧密的集成。
以下是 SharePoint 2013 的核心功能:
功能 | 原生功能 | 示例可扩展性 |
---|---|---|
站点 | 在站点中,您可以找到 SharePoint 的协作方面。站点包含大量功能,包括创建、存储和检索数据,以及管理、标记和搜索内容、文档和信息的功能。您还可以通过列表和文档库连接到 Microsoft Office 2013 客户端应用程序。 | 站点、站点模板、SharePoint 应用、工作流、母版页、网站页 |
社交 | 提供社交和社交网络功能、新闻源和个人资料搜索和标记,以及通过技能、组织位置、关系和内容评级搜索、查找和与人员互动。 | 搜索自定义、评级和标记功能、博客、Wiki、元数据标记 |
内容 | 包含使用网页、应用、工作流或内容类型浏览、搜索和管理内容的功能。 | SharePoint 应用、工作流、Word 或 Excel 服务 |
搜索 | 以丰富且动态的方式搜索 SharePoint 内外的内容,并通过 Office Web Apps 实现实时文档查看。此外,还集成了结构化数据库系统以及本地或基于云的 LOB 系统(例如 SAP、Siebel 和 Microsoft Dynamics)中的信息。 | SharePoint 搜索、搜索自定义、业务数据连接 (BDC) |
见解 | 主要关于 BI 和支持,例如,将 Microsoft Access 集成到 SharePoint 的功能;利用 Excel 和 SQL Server 在网页上访问和显示数据;启用仪表板和关键绩效指标 (KPI) 以将原始数据转换为可操作信息。 | Excel 服务、Access 服务、仪表板、BDC、PerformancePoint 服务 |
互操作性 | 范围从 LOB 集成到 Office 集成,通过新的 Office 应用程序模型;(考虑一下连接到云服务而不是 VSTO 托管代码加载项的 HTML 和 JavaScript 驱动的自定义任务窗格)到自定义解决方案开发。 | BDC、Office 应用、自定义开发 |
品牌 | 通过内置模板更改或更详细和以组织为导向的品牌来更改站点的外观。 | SharePoint 的开箱即用配置、母版页和自定义应用 |
SharePoint - 设置环境
本章将介绍如何设置 SharePoint 的开发环境。您可能已经知道,SharePoint 有三种不同的版本:
- SharePoint Foundation
- SharePoint Server
- Office 365
本章将使用基于云的 Office 365 版本。
步骤 1 − 您可以在此处轻松创建一个免费试用帐户 https://products.office.com/en/business/office-365-enterprise-e3-business-software。
![Office 365](/sharepoint/images/office_365.jpg)
步骤 2 − 点击“免费试用”选项。将打开一个新页面。
![Free Trial](/sharepoint/images/free_trial.jpg)
步骤 3 − 输入所需信息并点击下一步,您将看到以下页面。
![Enter Information](/sharepoint/images/enter_information.jpg)
步骤 4 − 输入用户名、公司名称和密码,然后点击下一步。系统会向您发送验证码。验证完成后,它将开始创建帐户。
![Save Information](/sharepoint/images/save_information.jpg)
步骤 5 − 创建帐户后,您将看到以下页面。
![Account Created](/sharepoint/images/account_created.jpg)
步骤 6 − 点击准备就绪,您将看到以下页面 −
![Check Page](/sharepoint/images/check_page.jpg)
现在您的环境已准备就绪,您可以开始 SharePoint 开发,但是您还需要安装 Visual Studio。
Microsoft 提供 Visual Studio 的免费版本,其中还包含 SQL Server,您可以从此处下载 https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx。
安装
以下步骤将指导您安装 SharePoint。
步骤 1 − 下载完成后,运行安装程序。将显示以下对话框。
![Visual Studio](/sharepoint/images/visual_studio.jpg)
步骤 2 − 点击安装,它将启动安装过程。
![Install Visual Studio](/sharepoint/images/install_visual_studio.jpg)
步骤 3 − 安装过程成功完成后,您将看到以下消息 −
![Setup Completed](/sharepoint/images/setup_completed.jpg)
步骤 4 − 根据需要重新启动计算机。现在从开始菜单打开 Visual Studio。它将打开以下对话框,并需要一些时间进行准备。
![Preparing Visual Studio](/sharepoint/images/preparing_visual_studio.jpg)
步骤 5 − 完成后,您将看到 Visual Studio 的主窗口。
![Main Window](/sharepoint/images/main_window.jpg)
您现在可以开始您的应用程序开发了。
步骤 6 − 选择文件 → 新建 → 项目菜单选项。
![New Project](/sharepoint/images/new_project.jpg)
步骤 7 − 在模板 → Visual C#下左侧窗格中选择 Office/SharePoint。双击安装 Office 开发人员工具。
![Install Office Developer Tools](/sharepoint/images/install_office_developer_tools.jpg)
步骤 8 − 点击安装并关闭所有 Visual Studio 实例。将打开一个新页面。点击下一步。
![Click Install](/sharepoint/images/click_install.jpg)
步骤 9 − 将出现一个消息框。点击更新。
![Update](/sharepoint/images/update.jpg)
步骤 10 − 更新完成后,您将看到如下消息 −
![Update Completed](/sharepoint/images/update_completed.jpg)
SharePoint - 创建网站集
站点是 SharePoint 的核心,代表着开发人员的起点,没有站点集,就无法开始 SharePoint 开发。Microsoft SharePoint Online 站点集是一个包含子站点的顶级站点。
您可以使用许多可用的站点模板。子站点共享管理设置、导航和权限,每个都可以根据需要为各个子站点更改。
创建站点集
学习 SharePoint 等应用程序时,最好创建一个区域来执行练习,而不会影响现有环境或用户。
步骤 1 − 要创建新的站点集,请访问站点 https://portal.office.com/
![Create Site Collection](/sharepoint/images/create_site_collection.jpg)
步骤 2 − 选择管理员图标,您将看到以下页面 −
![Select Admin Icon](/sharepoint/images/select_admin_icon.jpg)
步骤 3 − 在左侧窗格中选择资源 → 站点。在右侧窗格中,点击添加站点。
![Add a Site](/sharepoint/images/add_a_site.jpg)
步骤 4 − 将打开以下页面。输入所需信息并点击确定。
![Site Tab](/sharepoint/images/site_tab.jpg)
您可以在管理员中心 URL 列表中看到已添加的站点集。URL 是站点集的位置,管理员可以在此处开始创建和管理站点。
![Site Collection](/sharepoint/images/site_collection.jpg)
步骤 5 − 点击链接,您将看到有关该站点集的详细信息。
![Click the link](/sharepoint/images/click_the_link.jpg)
SharePoint - API
本章将介绍访问 SharePoint 平台的几组 API。
API 的选择取决于以下几个因素:
- 应用程序类型
- 开发人员现有技能
- 运行代码的设备
应用程序类型
有不同类型的应用程序,例如:
- SharePoint 加载项
- SharePoint 页面上的 Web 部件
- 在客户端计算机或客户端移动设备上运行的 Silverlight 应用程序
- 在 SharePoint 中公开的 ASP.NET 应用程序
- 在 SharePoint 网站页面中运行的 JavaScript
- SharePoint 应用程序页面
- 在客户端计算机上运行的 Microsoft .NET Framework 应用程序
- Windows PowerShell 脚本
- 在 SharePoint 服务器上运行的计时器作业
开发人员现有技能
如果您已经具备以下任何编程模型的经验,则可以轻松地在 SharePoint 中创建应用程序,而无需学习大量有关 SharePoint 编程的知识:
- JavaScript
- ASP.NET
- REST/OData
- .NET Framework
- Windows Phone
- Silverlight
- Windows PowerShell
运行代码的设备
运行代码的设备可以是以下任何一种:
- SharePoint 场中的服务器。
- 外部服务器,例如云中的服务器。
- 客户端计算机和移动设备。
下表为不同 API 集提供了指导,这些 API 可用于选定的常用 SharePoint 扩展项目列表。
序号 | API 及其用途 |
---|---|
1 | .NET Framework 客户端对象模型、Silverlight 客户端对象模型、REST/OData 端点 创建一个 ASP.NET Web 应用程序,该应用程序对 SharePoint 数据或由 BCS 外部内容类型在 SharePoint 中显示的外部数据执行 CRUD 操作,但不必跨防火墙调用 SharePoint。 |
2 | REST/OData 端点 创建一个执行 SharePoint 数据或由 BCS 外部内容类型在 SharePoint 中显示的外部数据的 CRUD 操作的 LAMP Web 应用程序。 创建一个执行 SharePoint 数据的 CRUD 操作的 iOS 或 Android 应用。 |
3 | 移动客户端对象模型 创建一个执行 SharePoint 数据的 CRUD 操作的 Windows Phone 应用。 |
4 | 移动客户端对象模型和服务器对象模型 创建一个使用 Microsoft 推送通知服务来提醒移动设备 SharePoint 中事件的 Windows Phone 应用。 |
5 | .NET Framework 客户端对象模型 创建一个执行 SharePoint 数据的 CRUD 操作的 .NET Framework 应用程序。 |
6 | Silverlight 客户端对象模型 创建一个执行 SharePoint 数据的 CRUD 操作的 Silverlight 应用程序。 |
7 | JavaScript 客户端对象模型 创建一个执行 SharePoint 数据的 CRUD 操作的 HTML/JavaScript 应用程序。 创建一个与 SharePoint 协同工作的 Office 加载项 |
8 | 服务器对象模型 创建自定义 Windows PowerShell 命令。 创建计时器作业。 创建中央管理的扩展。 在整个 SharePoint 场中创建一致的品牌。 创建自定义 Web 部件、应用程序页面或 ASP.NET 用户控件。 |
SharePoint - 中心管理
本章将介绍 SharePoint 中央管理的高级概述。中央管理是您可以从中心位置执行管理任务的地方。由于我们已经注册了 Office 365,因此我们也有一个管理站点。
在浏览器中打开 URL https://portal.office.com/。
步骤 1 − 选择管理员图标。
![Admin Icon](/sharepoint/images/admin_icon.jpg)
步骤 2 − 现在在左侧窗格中选择管理中心 → SharePoint。
![Admin Centers](/sharepoint/images/admin_centers.jpg)
将打开以下页面。
![Admin Tab](/sharepoint/images/admin_tab.jpg)
您可以看到各种站点集管理功能,并管理以下活动:
- 应用程序管理
- 监控
- 安全
- 常规应用程序设置
- 系统设置
- 备份和还原
- 升级和迁移
- 配置向导
- 应用
应用程序管理
在应用程序管理中,您可以执行创建新的 Web 应用程序和站点集等任务。您可以管理安装在 SharePoint 站点上的服务(例如 Word、Excel 或 BCS)并管理您的内容数据库。
您还可以执行修改内容数据库属性、激活功能和创建新的站点集等任务。
监控
监控是您可以管理报告、监控和 SharePoint 站点状态的中心位置。监控站点分为三个区域,如下所示:
运行状况状态 − 您可以查看 SharePoint 服务器上不同服务的状况。
计时器作业 − 您可以定义特定作业并决定何时运行它们。
报表 − 一组工具,使您可以创建和管理报表、运行诊断日志记录以及查看有关各种服务器端活动的报表。
安全
安全设置是关于主浏览器 UI 中的安全性的,用户和站点管理员可以在其中评估与用户站点的用户相关的特定权限。安全性涵盖许多领域,例如:
- 管理员帐户的管理
- 服务帐户的配置和管理。
- 密码更改设置和策略的管理。
- 身份验证提供程序、受信任身份提供程序的规范。
- 防病毒设置。
- 被阻止的文件类型。
- 自助服务安全性。
- 安全令牌服务。
常规应用程序设置
在常规应用程序设置中,您可以为 SharePoint 站点集和站点配置许多常规选项,例如向用户发送邮件。
您还可以管理许多部署和审批选项,例如内容部署位置和该内容的审批者。一般来说,可以将此站点视为 SharePoint 站点的通用设置。
系统设置
您可以配置以服务器为中心的设置,例如场级别或访问功能,甚至可以管理可用于站点集用户的服务(如 Excel 和 Word 服务)。您可以从系统设置站点内管理这些类型的设置。
备份和还原
有时,您可能需要备份和还原您的 SharePoint 网站。备份和还原功能使您能够创建和安排 SharePoint 的定期备份,执行临时备份,从先前备份的 SharePoint 网站还原等。
升级和迁移
有时,您可能希望从一个版本的 SharePoint 升级到另一个版本,例如从 SharePoint Standard 迁移到 SharePoint Enterprise。这需要许可证和一些升级服务器的工具。
此类活动可以在中央管理网站的“升级和迁移”部分进行。您还可以从此管理工具集部分安装服务补丁、检查安装和升级进度。
配置向导
它只是一个简单的分步向导,可为您配置 SharePoint Server。
您在首次安装 SharePoint 时应该已经看到过此向导。但是,您可以在安装后再次运行它来更改 SharePoint 服务器上的一些配置。
应用
“应用”是中央管理网站中的一个新类别,它使您能够管理安装在 SharePoint 实例上的应用的不同方面。
例如,您可以使用“应用”来管理许可证,确保应用以无错误的方式运行和执行,还可以管理应用目录。
SharePoint - 应用模型
本章将介绍 SharePoint 部署应用模型。由于 SharePoint 正在转向云端,因此可以使用以下部署模型来使用 SharePoint 应用:
- SharePoint 托管
- 自动托管
SharePoint 托管应用
SharePoint 托管部署类型代表了一种将客户端轻量级应用部署到 SharePoint 的方法。将 SharePoint 托管应用视为没有服务器端代码的应用程序是最简单的方法。
SharePoint 托管应用的关键功能包括:
它是一个由静态应用程序文件或页面组成的应用程序,这些文件或页面驻留在您的 SharePoint 上,例如 HTML 和 JavaScript 文件,这些文件支持客户端编码。
当用户访问 SharePoint 托管应用时,他们会被重定向到包含您的应用程序的页面。
SharePoint 托管部署类型适用于较轻量级的应用,例如品牌列表视图、媒体应用或天气应用。
如果您决定使用 SharePoint 托管部署模型,那么您将仅限于不在服务器上运行的代码。
您可以将 Silverlight 与 SharePoint 一起使用,并利用 HTML 和 JavaScript。
让我们来看一个简单的 SharePoint 托管应用程序示例。
步骤 1 - 打开 Visual Studio 并选择文件 → 新建 → 项目菜单。
![Project Menu](/sharepoint/images/project_menu.jpg)
步骤 2 - 在左侧窗格中选择模板 → Visual C# → Office/SharePoint,然后在中间窗格中选择SharePoint 应用。
在“名称”字段中输入名称,单击“确定”,您将看到以下对话框。
![App for SharePoint](/sharepoint/images/app_for_sharepoint.jpg)
在新 SharePoint 应用中,我们需要添加要调试的 SharePoint 网站 URL,然后选择 SharePoint 托管模型作为您希望托管 SharePoint 应用的方式。
步骤 3 - 转到 SharePoint 管理中心并复制 SharePoint URL。
![SharePoint URL](/sharepoint/images/sharepoint_url.jpg)
步骤 4 - 将 URL 粘贴到新 SharePoint 应用对话框中,如下所示。
![New App for SharePoint](/sharepoint/images/new_app_for_sharepoint.jpg)
步骤 5 - 单击下一步,它将打开连接到 SharePoint对话框,我们需要登录。
![Connect to SharePoint](/sharepoint/images/connect_to_sharepoint.jpg)
步骤 6 - 输入您的凭据并单击登录按钮。成功登录到 SharePoint 网站后,您将看到以下对话框:
![Sign in](/sharepoint/images/sign_in.jpg)
步骤 7 - 单击完成。创建项目后,单击解决方案资源管理器中的AppMenifest.xml文件。
![AppMenifest.xml](/sharepoint/images/appmenifest_xml.jpg)
步骤 8 - 单击权限选项卡。将打开一个“范围”下拉列表。
![Permissions Tab](/sharepoint/images/permissions_tab.jpg)
步骤 9 - 在“范围”下拉列表中,选择网站,这是您正在配置的权限范围。在“权限”下拉列表中,选择“读取”,这是您正在配置的权限类型。
![Select Web](/sharepoint/images/select_web.jpg)
步骤 10 - 打开 Default.aspx 文件并将其替换为以下代码。
<%-- The following 4 lines are ASP.NET directives needed when using SharePoint components --%> <%@ Page Inherits = "Microsoft.SharePoint.WebPartPages.WebPartPage, Microsoft.SharePoint, Version = 15.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" MasterPageFile = "~masterurl/default.master" Language = "C#" %> <%@ Register TagPrefix = "Utilities" Namespace = "Microsoft.SharePoint.Utilities" Assembly = "Microsoft.SharePoint, Version = 15.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" %> <%@ Register TagPrefix = "WebPartPages" Namespace = "Microsoft.SharePoint.WebPartPages" Assembly = "Microsoft.SharePoint, Version = 15.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" %> <%@ Register TagPrefix = "SharePoint" Namespace = "Microsoft.SharePoint.WebControls" Assembly = "Microsoft.SharePoint, Version = 15.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" %> <%-- The markup and script in the following Content element will be placed in the <head> of the page --%> <asp:Content ID = "Content1" ContentPlaceHolderID = "PlaceHolderAdditionalPageHead" runat = "server"> <script type = "text/javascript" src = "../Scripts/jquery- 1.6.2.min.js"></script> <link rel = "Stylesheet" type = "text/css" href = "../Content/App.css" /> <script type = "text/javascript" src = "../Scripts/App.js"></script> </asp:Content> <asp:Content ID = "Content2" ContentPlaceHolderID = "PlaceHolderMain" runat = "server"> <script type = "text/javascript"> function hello() { var currentTime = new Date(); $get("timeDiv").innerHTML = currentTime.toDateString(); } </script> <div id = "timeDiv"></div> <input type = "button" value = "Push me!" onclick = "hello();" /> </asp:Content>
步骤 11 - 转到解决方案资源管理器,右键单击项目并选择“发布”。单击打包应用按钮。这将构建您的 SharePoint 托管应用,并为将其部署到您的 SharePoint 网站做好准备。
![Package the App](/sharepoint/images/package_the_app.jpg)
您将看到以下文件夹,其中包含 *.app 文件。
![App File](/sharepoint/images/app_file.jpg)
步骤 12 - 导航到您的 SharePoint 在线网站。
![Navigate to SharePoint](/sharepoint/images/navigate_to_sharepoint.jpg)
步骤 13 - 在左侧窗格中单击SharePoint 应用。将打开一个新页面。
![Apps for SharePoint](/sharepoint/images/apps_for_sharepoint.jpg)
步骤 14 - 将您的文件拖到这里上传。
![Uploading Files](/sharepoint/images/uploading_files.jpg)
文件上传后,您将看到以下页面:
![Uploaded file Tab](/sharepoint/images/uploaded_file_tab.jpg)
步骤 15 - 在左侧窗格中单击选项 - 网站内容。单击添加应用图标,如下面的屏幕截图所示:
![Site Contents](/sharepoint/images/site_contents.jpg)
将打开一个新页面。
步骤 16 - 在左侧窗格中选择您的应用 → 来自您的组织,您将看到该应用可供安装。单击该应用。
![Select app from Organization](/sharepoint/images/select_app_from_organization.jpg)
步骤 17 - 单击该应用时,将打开一个对话框,如下面的屏幕截图所示。单击信任它。
![Dialogue Box](/sharepoint/images/dialogue_box.jpg)
步骤 18 - 您将看到该应用已安装。安装完成后,您可以单击该应用。
![App Installed](/sharepoint/images/app_installed.jpg)
您将看到以下页面,其中包含一个按钮:
![Page](/sharepoint/images/page.jpg)
单击按下我按钮时,它将显示当前日期。
![Push me Button](/sharepoint/images/push_me_button.jpg)
自动托管
自动托管部署模型与以前的 SharePoint 应用程序大相径庭。在此模型中,您构建用于 SharePoint 的应用,但代码会在后台无缝部署到 Windows Azure,因此 SharePoint 会自动为您创建云托管应用。
重要的功能包括:
它看起来像是在 SharePoint 上运行,但在后台实际上是部署到特殊的 Office 365 Windows Azure 实例,并作为经过身份验证和授权的应用在 SharePoint 上注册。
使用自动托管部署模型,您无法完全访问 Windows Azure 平台的全部平台功能,但您拥有足够的平台来构建一些有趣的应用程序。
让我们来看一个通过创建新项目来实现自动托管的简单示例。
步骤 1 - 选择SharePoint 2013 应用并单击确定。
![App for SharePoint 2013](/sharepoint/images/app_for_sharepoint_2013.jpg)
将打开一个新的对话框。
步骤 2 - 选择自动托管并单击下一步。
![Select Autohosted](/sharepoint/images/select_autohosted.jpg)
步骤 3 - 将打开一个新的对话框。选择ASP.NET MVC Web 应用程序并单击完成。
![ASP.NET MVC Web Application](/sharepoint/images/select_asp_net_mvc_web_application.jpg)
创建项目后,发布您的应用。其余步骤与 SharePoint 托管选项中提供的步骤相同。
SharePoint - 集成选项
本章将介绍集成选项。SharePoint 2013 中的新应用程序模型为您的应用程序提供了许多选项,可让它与 SharePoint、其他系统和数据深度集成。这些选项如下:
- 用户界面集成
- 事件和逻辑集成
- 数据集成
用户界面集成
在用户界面集成中,您可以作为 SharePoint 应用程序模型的一部分使用三个主要的集成点,它们如下:
- 应用部件和页面
- 功能区和操作菜单
- 导航
应用部件和页面
应用部件和页面使您可以向用户显示应用程序的用户界面。对于熟悉 SharePoint 2010 的人来说,应用部件类似于 Web 部件。
应用部件是可重用且可配置的应用程序窗口。
页面与应用部件非常相似,只是它们以更大、更完整的窗口样式显示。
功能区和操作菜单
功能区首次在 SharePoint 2010 中推出。它为用户可能想要对文档和其他数据执行的所有操作提供了一个中心位置。
在 SharePoint 2010 中,开发人员可以在功能区中为其应用程序包含自定义操作;SharePoint 应用程序也允许此自定义。这使您能够在用户期望的位置包含操作,与 SharePoint 提供的所有其他标准操作一起。
操作菜单是 SharePoint 列表或库中项目的上下文相关菜单。例如,在 SharePoint 文档库中,操作菜单会显示常见的函数,例如“签入”和“签出”。
此菜单的另一个常用术语是“编辑控件块”。
SharePoint 应用程序允许您在此菜单中包含其他操作。例如,这是一个显示应用于单个列表项的应用程序函数的绝佳位置。
导航
导航允许用户找到您的应用程序,并且与功能区和操作菜单集成允许您的用户在与他们在 SharePoint 其他位置执行操作相同的熟悉位置执行操作。
使用一个或多个这些构建块,您可以将应用程序的用户界面与 SharePoint 的用户界面集成,并将您的应用展示给其用户。
事件和逻辑集成
为用户提供 UI 通常是任何应用程序最突出的方面。另一方面,响应用户采取的操作(无论是在应用程序内还是与应用程序交互)也极其重要。
关键功能包括:
SharePoint 应用程序能够响应应用程序内的活动(例如单击按钮)以及响应 SharePoint 内的活动(例如签出文档等)。
响应应用程序内的活动非常简单。您的应用程序的 UI 和代码远程运行于 SharePoint,并且只是通过应用部件和页面显示。因此,响应诸如在应用程序中单击按钮之类的事件完全取决于应用程序的编程框架。例如,如果您的应用是用 ASP.NET 构建的,那么您只需捕获 ASP.NET 按钮的OnClick事件。
对于这些类型的事件,SharePoint 不会妨碍您。对于响应在 SharePoint 内发生的事件(例如保存或更新文档),SharePoint 提供事件接收器。
SharePoint 2013 还提供事件接收器,允许应用程序响应 SharePoint 网站中发生的事件。
数据集成
数据是每个应用程序的核心,通常是用户希望在您的应用程序中使用的内容。SharePoint 提供了许多开箱即用的选项来存储和使用数据。这些选项如下:
在 SharePoint 中存储和操作数据。
使用存在于 SharePoint 之外的外部数据。
从 SharePoint 的第一个版本开始,目标就是使用户能够轻松直接地使用数据。
最简单的例子就是列表数据的概念。用户能够通过通用的 Web 界面存储和使用表格样式的数据。
许多人认为使用列表类似于在数据库中使用数据表。SharePoint应用程序也可以通过使用列表来原生利用这些相同的数据存储功能,SharePoint让开发者能够利用SharePoint提供的许多数据存储功能,而无需重新发明轮子。
如果使用得当,SharePoint可以节省时间和精力,并可能降低运营的管理和支持成本。
以下是核心数据存储功能:
列表 - 用于存储结构化数据,就像在表中一样。
库 - 用于存储非结构化数据,例如文档或文件。
SharePoint为开发人员提供了一套全面的API,可在应用程序中使用这些API与SharePoint中的数据交互并操作数据。对于SharePoint应用程序,这些API在客户端对象模型(CSOM)中公开。
您将在接下来的章节中看到许多这些选项。
SharePoint - 开发工具
在本章中,我们将介绍关于SharePoint的不同“开发”级别。每个级别都以某种方式服务于SharePoint网站的最终用户。您可以将此范围划分为以下几类:
最终用户 - 将平台用作应用程序平台。
高级用户 - 创建和管理(可能还包括品牌推广)网站。
设计师 - 品牌推广网站并构建用户体验。
开发者 - 构建和部署应用程序。
从开发者到最终用户,各种人员都与SharePoint交互。下图显示了这一点。
![Development](/sharepoint/images/development.jpg)
网站设置
网站设置是SharePoint的主要部分之一。熟悉它非常重要。
步骤1 - 要访问网站设置页面,请点击SharePoint管理中心中的用户配置文件。点击“我的网站设置”下的设置我的网站选项。
![Site Settings Page](/sharepoint/images/site_settings_page.jpg)
将打开以下页面。
![Setup Page](/sharepoint/images/setup_page.jpg)
您将在本页面上找到您网站的大多数配置,例如:
- 更改网站的主题。
- 激活功能。
- 管理权限。
步骤2 - 一些设置选项也位于“设置”中。因此,请点击左侧窗格中的“设置”。
![Settings](/sharepoint/images/settings.jpg)
请注意,网站设置页面的核心功能被分为主要类别。例如,您的大部分安全设置都可以在“用户和权限”类别中找到,主题设置在“网页设计库”中,依此类推。
添加HTML页面
编辑体验范围从格式化文本到添加图像或多媒体。您可以通过直接在SharePoint网站中嵌入HTML来更深入地了解代码。
这项任务更像是开发,所以让我们来看一个简单的添加HTML页面的例子。
步骤1 - 打开您的SharePoint网站并导航到网站的主页。在“页面”选项卡上,点击“编辑”菜单选项。
![SharePoint Site](/sharepoint/images/sharepoint_site.jpg)
步骤2 - 在“插入”选项卡上,点击“嵌入代码”选项。
![Insert Tab](/sharepoint/images/insert_tab.jpg)
将打开以下对话框:
![Dialog Box](/sharepoint/images/dialog_box.jpg)
步骤3 - 将一些HTML代码添加到代码字段中,如下所示:
![HTML Code](/sharepoint/images/html_code.jpg)
步骤4 - 点击插入,您将看到HTML代码段已插入。
![Insert](/sharepoint/images/insert.jpg)
步骤5 - 点击保存。
![Click Save](/sharepoint/images/click_save.jpg)
您可以看到HTML代码已插入到您的SharePoint网站中。
添加媒体文件
要将媒体播放器应用程序添加到SharePoint网站,请打开SharePoint网站并导航到网站的主页。
步骤1 - 在“页面”选项卡上,点击“编辑”菜单选项。
![Edit Menu](/sharepoint/images/edit_menu.jpg)
步骤2 - 选择“Web部件”选项。
![Web Part Option](/sharepoint/images/web_part_option.jpg)
步骤3 - 从类别中选择“媒体和内容”,然后从“部件”部分选择带部件的媒体。点击添加。
![Media With Parts](/sharepoint/images/media_with_parts.jpg)
步骤4 - 保存页面,您将看到包含媒体文件的以下页面。
![Media File](/sharepoint/images/media_file.jpg)
SharePoint Designer
许多开发人员更倾向于不使用SharePoint Designer作为开发SharePoint网站的工具。但是,关键是SharePoint Designer工具可以使某些开发任务更容易。
重要的功能包括:
SharePoint Designer可用于SharePoint的各种设计器功能,包括创建和编辑网站、页面、列表和内容类型。
SharePoint Designer也适用于创建基于规则的声明性工作流,然后可以将其导入Visual Studio以进行更深层次的自定义。
它可以从https://www.microsoft.com/en-pk/download/details.aspx?id=35491下载和安装
第一次打开SharePoint Designer时,您需要为其提供SharePoint网站的URL并以提升的用户身份进行身份验证。
SharePoint Designer继承标准的SharePoint权限。
在SharePoint Designer中打开网站后,将出现许多可导航的选项以及有关网站的一些信息,例如网站元数据、权限、子网站等。
所以让我们使用SharePoint Designer,但首先我们需要通过打开SharePoint网站来使用Office 365设置SharePoint Designer。
步骤1 - 打开SharePoint网站。
![Open SharePoint Site](/sharepoint/images/open_sharepoint_site.jpg)
步骤2 - 选择Office 365设置菜单选项。选择左侧窗格中的“设置”,然后选择中间窗格中的软件。
![Office 365 Settings](/sharepoint/images/office_365_settings.jpg)
步骤3 - 选择左侧窗格中的工具和加载项,您将看到不同的选项。最后,您将看到SharePoint Designer选项,点击链接。
![Tool and Add-ins](/sharepoint/images/tools_and_addins.jpg)
步骤4 - 安装后打开SharePoint Designer。点击打开网站选项。
![Open Site](/sharepoint/images/open_site.jpg)
步骤5 - 指定SharePoint网站的URL,然后点击打开。
![Specify the URL](/sharepoint/images/specify_the_url.jpg)
步骤6 - SharePoint Designer网站打开后,您将看到不同的可用选项。
![SharePoint Designer Site](/sharepoint/images/sharepoint_designer_site.jpg)
步骤7 - 点击功能区上的SharePoint列表,然后从菜单中选择任务。
![SharePoint Lists](/sharepoint/images/sharepoint_lists.jpg)
步骤8 - 将打开一个新的对话框。指定名称和描述,然后点击确定。
![New Dialog Box](/sharepoint/images/new_dialog_box.jpg)
步骤9 - 让我们使用门户访问同一个网站,您将在您的网站上看到待办事项列表。
![To Do List](/sharepoint/images/todo_list.jpg)
Visual Studio和Expression Blend
您还可以使用Visual Studio和Blend向SharePoint网站添加一些内容。Visual Studio提供了许多功能来帮助开发SharePoint中的应用程序;详细了解它们非常有帮助。
让我们来看一个SharePoint托管应用程序的简单示例,方法是打开Visual Studio。选择文件→新建→项目选项。
步骤 1 - 打开 Visual Studio 并选择文件 → 新建 → 项目菜单。
![Project Menu](/sharepoint/images/project_menu.jpg)
步骤 2 - 在左侧窗格中选择模板 → Visual C# → Office/SharePoint,然后在中间窗格中选择SharePoint 应用。
在“名称”字段中输入名称,单击“确定”,您将看到以下对话框。
![App for SharePoint](/sharepoint/images/app_for_sharepoint.jpg)
在新 SharePoint 应用中,我们需要添加要调试的 SharePoint 网站 URL,然后选择 SharePoint 托管模型作为您希望托管 SharePoint 应用的方式。
步骤 3 - 转到 SharePoint 管理中心并复制 SharePoint URL。
![SharePoint URL](/sharepoint/images/sharepoint_url.jpg)
步骤 4 - 将 URL 粘贴到新 SharePoint 应用对话框中,如下所示。
![New App for SharePoint](/sharepoint/images/new_app_for_sharepoint.jpg)
步骤 5 - 单击下一步,它将打开连接到 SharePoint对话框,我们需要登录。
![Connect to SharePoint](/sharepoint/images/connect_to_sharepoint.jpg)
步骤 6 - 输入您的凭据并单击登录按钮。成功登录到 SharePoint 网站后,您将看到以下对话框:
![Sign in](/sharepoint/images/sign_in.jpg)
步骤 7 - 单击完成。创建项目后,单击解决方案资源管理器中的AppMenifest.xml文件。
![AppMenifest.xml](/sharepoint/images/appmenifest_xml.jpg)
步骤 8 - 单击权限选项卡。将打开一个“范围”下拉列表。
![Permissions Tab](/sharepoint/images/permissions_tab.jpg)
步骤9 - 在“范围”下拉列表中,选择Web,这是您正在配置的权限范围。在“权限”下拉列表中,选择读取,这是您正在配置的权限类型。
![Select Web](/sharepoint/images/select_web.jpg)
步骤 10 - 打开 Default.aspx 文件并将其替换为以下代码。
<%-- The following 4 lines are ASP.NET directives needed when using SharePoint components --%> <%@ Page Inherits = "Microsoft.SharePoint.WebPartPages.WebPartPage, Microsoft.SharePoint, Version = 15.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" MasterPageFile = "~masterurl/default.master" Language = "C#" %> <%@ Register TagPrefix = "Utilities" Namespace = "Microsoft.SharePoint.Utilities" Assembly = "Microsoft.SharePoint, Version = 15.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" %> <%@ Register TagPrefix = "WebPartPages" Namespace = "Microsoft.SharePoint.WebPartPages" Assembly = "Microsoft.SharePoint, Version = 15.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" %> <%@ Register TagPrefix = "SharePoint" Namespace = "Microsoft.SharePoint.WebControls" Assembly = "Microsoft.SharePoint, Version = 15.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" %> <%-- The markup and script in the following Content element will be placed in the <head> of the page --%> <asp:Content ID = "Content1" ContentPlaceHolderID = "PlaceHolderAdditionalPageHead" runat = "server"> <script type = "text/javascript" src = "../Scripts/jquery- 1.6.2.min.js"></script> <link rel = "Stylesheet" type = "text/css" href = "../Content/App.css" /> <script type = "text/javascript" src = "../Scripts/App.js"></script> </asp:Content> <asp:Content ID = "Content2" ContentPlaceHolderID = "PlaceHolderMain" runat = "server"> <script type = "text/javascript"> function hello() { var currentTime = new Date(); $get("timeDiv").innerHTML = currentTime.toDateString(); } </script> <div id = "timeDiv"></div> <input type = "button" value = "Push me!" onclick = "hello();" /> </asp:Content>
步骤 11 - 转到解决方案资源管理器,右键单击项目并选择“发布”。单击打包应用按钮。这将构建您的 SharePoint 托管应用,并为将其部署到您的 SharePoint 网站做好准备。
![Package the App](/sharepoint/images/package_the_app.jpg)
您将看到以下文件夹,其中包含 *.app 文件。
![App File](/sharepoint/images/app_file.jpg)
步骤 12 - 导航到您的 SharePoint 在线网站。
![Navigate to SharePoint](/sharepoint/images/navigate_to_sharepoint.jpg)
步骤 13 - 在左侧窗格中单击SharePoint 应用。将打开一个新页面。
![Apps for SharePoint](/sharepoint/images/apps_for_sharepoint.jpg)
步骤 14 - 将您的文件拖到这里上传。
![Uploading Files](/sharepoint/images/uploading_files.jpg)
文件上传后,您将看到以下页面:
![Uploaded file Tab](/sharepoint/images/uploaded_file_tab.jpg)
步骤 15 - 在左侧窗格中单击选项 - 网站内容。单击添加应用图标,如下面的屏幕截图所示:
![Site Contents](/sharepoint/images/site_contents.jpg)
将打开一个新页面。
步骤 16 - 在左侧窗格中选择您的应用 → 来自您的组织,您将看到该应用可供安装。单击该应用。
![Select app from Organization](/sharepoint/images/select_app_from_organization.jpg)
步骤 17 - 单击该应用时,将打开一个对话框,如下面的屏幕截图所示。单击信任它。
![Dialogue Box](/sharepoint/images/dialogue_box.jpg)
步骤 18 - 您将看到该应用已安装。安装完成后,您可以单击该应用。
![App Installed](/sharepoint/images/app_installed.jpg)
您将看到以下页面,其中包含一个按钮:
![Page](/sharepoint/images/page.jpg)
单击按下我按钮时,它将显示当前日期。
![Push me Button](/sharepoint/images/push_me_button.jpg)
SharePoint - 列表功能
在本章中,我们将主要从最终用户的角度进行讨论,涵盖列表以及列表之上的一些增值功能,例如视图、验证等。当最终用户在SharePoint中创建内容时,它以列表的形式存储。
列表实际上是SharePoint中的数据存储机制。
它提供用户界面,以便能够查看列表中的项目、添加、编辑和删除项目或查看单个项目。
让我们来看一个简单的示例,我们将添加一个联系人列表。
步骤1 - 打开您的SharePoint网站并转到“网站内容”页面。您可以看到当前的内容、列表和库,并且我们可以通过点击添加应用程序来添加新内容。
![Add an App](/sharepoint/images/add_an_app.jpg)
步骤2 - 让我们来看看我们可以添加到网站的一些内容:
我们可以创建一个新的文档库。
我们可以创建一个自定义列表,在其中定义模式。
还有一些具有预定义模式的列表,例如此处的任务列表。
我们可以添加图片、一些Wiki页面、表单、链接列表、公告列表、联系人列表和日历等。
![Add to our site](/sharepoint/images/add_to_our_site.jpg)
步骤3 - 让我们选择联系人列表。
![Contact List](/sharepoint/images/contact_list.jpg)
步骤4 - 我们将此列表命名为联系人,然后点击创建按钮。
![Contacts](/sharepoint/images/contacts.jpg)
步骤5 - 现在您可以在您的网站联系人中看到联系人列表,您可以点击它来处理列表中的项目。
![Site Contacts](/sharepoint/images/site_contacts.jpg)
步骤6 - 向此列表添加新项目的一种方法是点击此“新建项目”链接,然后将其添加到我的内容中。
![Edit the list](/sharepoint/images/edit_the_list.jpg)
步骤7 - 输入姓氏和名字,然后转到工具栏或功能区,点击保存。
![Sites Tab](/sharepoint/images/sites_tab.jpg)
步骤8 - 我们还可以通过点击编辑链接将列表置于编辑模式。
![Edit Link](/sharepoint/images/edit_link.jpg)
步骤9 - 接下来,我们可以添加其他一些联系人。编辑完成后,点击停止编辑以退出徽章编辑模式。
![Stop Editing](/sharepoint/images/stop_editing.jpg)
页面将显示所有联系人。
![Contacts Tab](/sharepoint/images/contacts_tab.jpg)
我们在处理此处的列表时还有一些其他事情。
步骤10 - 点击项目以访问功能区上的项目。
![Items on Ribbon](/sharepoint/images/items_on_ribbon.jpg)
步骤11 - 点击这里的列表以访问与整个列表相关的功能区项目。
![Ribbon Items](/sharepoint/images/ribbon_items.jpg)
SharePoint - 其他列表功能
SharePoint为列表提供了许多功能。它提供列表数据的存储、自定义列表模式的能力以及查看、添加、编辑和删除列表项目等能力。还有更多可用的功能,例如在列表数据上创建视图、在字段和列表级别进行简单的验证、内容审批、项目版本控制等。
视图
让我们开始使用列表数据上的视图。在这里,我们回到了作者列表,正如您注意到的那样,我们只添加了四个项目。只有四个项目,从其数据中收集任何我们需要的信息并不难。
随着项目数量的增加,例如从4个增加到50个、100个,甚至可能是500个,仅仅浏览列表并快速获取所需信息变得越来越困难。为了解决这个问题,SharePoint使您可以创建列表的多个视图,以便我们可以过滤掉不需要的信息,例如:
- 我们可以对字段值进行排序。
- 我们可以对信息进行分组。
- 我们可以获取总数。
- 我们还可以有不同的方式来呈现信息。
对于大多数列表,当您创建它们时,默认情况下您会得到一个视图。它被称为所有项目视图,这就是我们在上面示例中看到的视图。
现在让我们看看如何创建自定义视图。与创建列表模式一样,SharePoint为我们提供了几种不同的方法来创建视图。一种方法是从现有视图开始,更改不同列的排序和过滤。我们可以按照您想要的方式获取数据,然后将其保存为新视图。
您会注意到,如果我们转到其他列标题,大多数列标题都会提供一个小的下拉菜单,我们可以访问,如下所示,工资/费率标题。
![Custom Views](/sharepoint/images/custom_views.jpg)
转到另一个列标题 - 个人简介。它没有下拉列表,因为它包含多行文本。其他列都有此选项。它使我们能够对信息进行排序或过滤。
让我们在这里创建一个过滤器,只显示员工。
![Create a Filter](/sharepoint/images/create_a_filter.jpg)
添加该过滤器后,请注意列标题中有一个小图标,表示这些字段值已被过滤。让我们按降序对其进行排序。
![Add Filter](/sharepoint/images/add_filter.jpg)
所以现在我们有了数据的新的视图,即降序视图。
![New View of Data](/sharepoint/images/new_view_of_data.jpg)
现在过滤和排序没有保留。因此,我们需要保存降序视图以备将来使用。
如果我们返回“作者”列表,将会看到所有项目。如果我们想要只查看员工,并按薪资/费率降序排序,请点击保存此视图选项。
我们将此视图称为“员工”视图。从给定的选项中选择此视图是供所有用户使用还是仅供我使用。点击保存。
![Save View Option](/sharepoint/images/save_view_option.jpg)
现在我们有两个不同的视图:“所有项目”视图和“员工”视图,我们可以使用列表视图顶部的链接在这两个视图之间切换,如下面的截图所示。
![Authors Tab](/sharepoint/images/authors_tab.jpg)
验证
我们将向 SharePoint 列表中的字段和项目添加简单的验证规则。在我们创建“作者”列表时,我们使用不同字段类型的属性添加了一些验证规则。
点击“作者”列表中的新建项目。然后点击保存。
点击保存后,您将收到两个错误。这是因为我们已将“姓名”和“薪资/费率”指定为必填字段。
![Required Fields](/sharepoint/images/required_fields.jpg)
分别输入姓名和薪资/费率为 Aamir Jameel 和 1500。点击保存。
![Edit Field](/sharepoint/images/edit_field.jpg)
您可以看到“薪资/费率”仍然存在问题,因为在创建该字段时,我们将其值指定为 0 到 1000 之间,而 1500 不满足此要求。点击取消。
转到功能区上的“列表”选项卡,然后点击列表设置。点击姓名。如下面的截图所示,这是一个必填字段。
![List Settings](/sharepoint/images/list_settings.jpg)
现在返回,点击“薪资/费率”,然后向下滚动。您会看到它也是必填字段。
![Back to Salary Rate](/sharepoint/images/back_to_salary_rate.jpg)
在这里,我们还设置了有效值范围。因此,如果字段类型具有这些属性,则一切正常,但是如果没有,该怎么办呢?我们可以添加一些简单的自定义验证。如果向下滚动到底部,您可以看到列验证区域。让我们展开它。在这里,我们可以指定一个公式,然后在用户输入的值不满足该公式时显示一条消息。
![Site Fields](/sharepoint/images/site_fields.jpg)
如果您不熟悉在 SharePoint 中构建公式,则有一个链接可以帮助您了解如何操作。
![Field Type](/sharepoint/images/field_type.jpg)
现在我们要添加的验证是:如果您不是员工,则您的薪资/费率表示您的小时费率,我们想说费率的最大值为 50.00 美元。因此,这里验证取决于“员工”字段和“薪资/费率”字段的值。因此,我们不会将验证添加到这两个字段中的任何一个,而是将其添加到项目中,然后指示项目验证的方法是转到列表设置。
![Validation](/sharepoint/images/validation.jpg)
点击验证设置,并设置如下所示的公式。
![Validation Settings](/sharepoint/images/validation_settings.jpg)
因此,条件将非常简单,首先,您是员工吗?如果是员工,那么我们已经将有效薪资值范围设置为 0 到 1000 之间。因此,只返回 True 值。如果您不是员工,我们将检查薪资/费率是否小于或等于 50。
如果此公式返回 True,则项目被认为有效。如果返回 false,则无效。最后,我们添加错误消息:“贡献者的最高费率为 50 美元”。
这完成了验证设置。点击保存。
现在返回“作者”列表并添加一个新项目。我们将将其命名为“测试”,选中“员工”复选框(因为我们正在测试员工),将“薪资/费率”输入为 800,然后点击保存。
![Authors List](/sharepoint/images/authors_list.jpg)
数据已保存。没有错误。现在让我们输入不同的条件。转到“作者”列表。我们将将其命名为“测试 2”。
![Conditions in Authors List](/sharepoint/images/conditions_in_authors_list.jpg)
现在不要选中“员工”复选框,因为我们现在假设此人是一位贡献者。将“薪资/费率”输入为 800,然后点击保存。
您将看到一条错误消息。因此,让我们将“薪资/费率”更改为有效值。
在“薪资/费率”字段中输入 40。
![Salary Rate Field](/sharepoint/images/salary_rate_field.jpg)
点击保存。
您将看到数据已正确保存并更新到列表中,如下面的屏幕截图所示。
![Data Saved](/sharepoint/images/data_saved.jpg)
查找字段
我们将了解列表关系和查找字段。我们将创建一个新列表来保存有关课程的信息。
步骤 1 − 转到网站内容→“添加应用”→自定义列表。
![Adding Custom List](/sharepoint/images/adding_custom_list.jpg)
步骤 2 − 指定列表“课程”,然后点击创建。打开“课程”列表。只有一个名为“标题”的列,它将代表课程的标题。
![List Courses](/sharepoint/images/list_courses.jpg)
步骤 3 − 创建第二个列,它将保存作者的姓名。转到功能区上的“列表”。点击创建列。
![List on the Ribbon](/sharepoint/images/list_on_the_ribbon.jpg)
步骤 4 − 将此列命名为作者。我们可以只使用单行文本让用户输入作者姓名。但是,我们已经在“作者”列表中有了作者姓名,因此我们将向用户显示一个下拉列表,以便他们可以选择作者。因此,我们将创建一个查找字段,而不是创建单行文本字段。
![Column as Author](/sharepoint/images/column_as_author.jpg)
步骤 5 − 接下来,我们需要指定要向用户显示的哪个列表中的哪个字段。SharePoint 默认设置了适当的值,但如果我们要更改列表,可以从下拉列表中选择。完成后,点击确定。
![Create Column](/sharepoint/images/create_column.jpg)
步骤 6 − 本课程是 SharePoint 教程,您可以看到我们有一个用于“作者”的下拉列表。
![Dropdown list for Author](/sharepoint/images/dropdown_list_for_author.jpg)
列表数据存储
列表的数据存储在行和列中。对于每个内容数据库,都有一个表用于存储列表的数据。您可以将列表关联在一起,强制实施关系完整性并进行验证。
人们经常假设关系数据库的许多功能都存在于列表中,并且一组列表几乎就像一个关系数据库一样,但事实并非如此。
您需要将列表更多地视为一组 Excel 工作表,您可以将一个工作表链接到另一个工作表,并且可以通过某种简单的表单对列或单元格强制执行验证。因此,SharePoint 中的一组列表并不像关系数据库。
SharePoint - 自定义列表
让我们看看如何创建一个自定义列表,在其中定义列表模式,而不是使用我们在创建“联系人”列表时使用的预定义模式。
步骤 1 − 要创建自定义列表,请转到网站内容,然后添加应用。点击自定义列表。
![Click Custom List](/sharepoint/images/click_custom_list.jpg)
步骤 2 − 在“名称”字段中输入“作者”,然后点击创建。
![Adding Custom List](/sharepoint/images/adding_custom_list.jpg)
步骤 3 − 现在您可以看到已添加“作者”。让我们点击“作者”应用。
![Authors Apps](/sharepoint/images/authors_apps.jpg)
步骤 4 − 点击新建项目。
![Click New Item](/sharepoint/images/click_new_item.jpg)
步骤 5 − 您可以看到,我们的列表只有一列。字段名称为“标题”,这是一个必填字段,因此在这里,我们将字段值设置为“测试”,然后点击保存。
![Set Field Value](/sharepoint/images/set_field_value.jpg)
注意 − 在 SharePoint 中,列也称为字段,因此这两个术语是同义词。
步骤 6 − 让我们通过点击“新建项目”链接添加另一个项目。
![New Item Link](/sharepoint/images/new_item_link.jpg)
步骤 7 − 将“标题”字段值设置为“演示”,然后点击保存。
![Title Field to Demo](/sharepoint/images/title_field_to_demo.jpg)
您可以看到我们有两个项目或两行,并且可以看到“标题”字段的值。请注意,在此值旁边,有一个小省略号,它是一个打开菜单的链接。
![Little Elipse](/sharepoint/images/little_ellipse.jpg)
注意 − 此菜单传统上称为编辑控件块或ECB菜单,但您也会听到它被称为列表项目联系人菜单。
我们创建自定义列表是因为我们想要定义模式。有几种方法可以做到这一点。
步骤 8 − 一种方法是将列表置于编辑模式。请注意,最后有一列,上面有一个 + 号,在这里我们可以向列表添加列。
![Add Columns to List](/sharepoint/images/add_columns_to_list.jpg)
步骤 9 − 点击 + 号,我们可以创建一个文本列。
![Text Column](/sharepoint/images/text_column.jpg)
步骤 10 − 您将看到以下页面。将此字段称为姓名。
![Name Field](/sharepoint/images/name_field.jpg)
步骤 11 − 输入姓名。这些将是文本。
![Enter the Name](/sharepoint/images/enter_the_name.jpg)
步骤 12 − 现在添加另一列,让我们将其设为数字列,以便只能输入数字作为数据。将其设置为“费率”,并添加一些值。
![Add another Column](/sharepoint/images/add_another_column.jpg)
此技术在您对列表进行原型设计时很有用,但您没有太多控制权。
因此,让我们看看定义列表模式的另一种方法。我们将通过列表设置来完成此操作。
步骤 13 − 点击“停止编辑”链接退出编辑模式。选择功能区上的“列表”,然后转到“列表设置”。
![Click Stop Editing](/sharepoint/images/click_stop_editing.jpg)
在这里,我们可以定义列表的模式。当我们创建列时,我们已经有“标题”列了。您可以看到我们创建的其他两列,以及一些隐藏的列,这些列由 SharePoint 在内部使用。
![Title Column](/sharepoint/images/title_column.jpg)
步骤 14 − 要定义“作者”列表的模式,请点击“姓名”列,然后点击删除。接下来,删除“费率”列。
![Schema of Authors List](/sharepoint/images/schema_of_authors_list.jpg)
步骤 15 − 现在,如果我们回到“作者”列表,我们可以看到这些列以及我们为它们设置的值都消失了。返回“列表设置”并设置您想要的实际模式。
![Actual Schema](/sharepoint/images/actual_schema.jpg)
步骤 16 − 页面显示一列“标题”。但是,我们不想要此列,而是想要一个代表作者姓名的列。因此,点击“标题”。
![Column With Title](/sharepoint/images/column_with_title.jpg)
步骤 17 − 点击标题后,将打开一个新页面。向下滚动到页面底部。没有删除页面的选项。
![Click Title](/sharepoint/images/click_title.jpg)
注意 − 我们无法删除此页面,因为此列与省略号链接相关联。但是,我们可以重命名它。
步骤 18 − 重命名列。我们将使用此列来表示作者姓名,然后点击确定。
![Rename the Column](/sharepoint/images/rename_the_column.jpg)
步骤 19 − 接下来,添加另一列来表示作者是员工还是贡献者。点击创建列。
![Click Create Column](/sharepoint/images/click_create_column.jpg)
步骤 20 − 将列名设置为“员工”,然后选择“是/否”字段类型。选择我们想要的字段类型后,向下滚动到页面底部,您会看到“其他列设置”。
注意 − 提供了几种不同的字段类型。SharePoint Foundation、SharePoint Server 和 SharePoint Online 中可用的字段类型不同。
此外,您正在构建的网站类型(即协作网站或发布网站)也会影响可用的字段类型。
![Publishing Site](/sharepoint/images/publishing_site.jpg)
步骤 21 − 将默认值设置为“否”,而不是“是”,然后点击确定。
![Default Value](/sharepoint/images/default_value.jpg)
步骤 22 − 现在让我们通过点击“创建列”来创建另一个列。此列将表示我们的员工的薪资或贡献者的费率。
![Creating Another Column](/sharepoint/images/creating_another_column.jpg)
步骤 23 − 我们将其称为“薪资/费率”,并将其设置为“货币”字段。
![Currency Field](/sharepoint/images/currency_field.jpg)
步骤 24 − 向下滚动,将其设置为必填字段,并将最小值设置为 0,最大值设置为 1000。输入 2,以便最多显示两位小数的货币。
![Edit Currency Field](/sharepoint/images/edit_currency_field.jpg)
步骤 25 − 让我们再添加一列,这将是个人简介。我们将将其称为简介,并将其类型设置为多行文本。
![Biography](/sharepoint/images/biography.jpg)
步骤 26 − 输入 6 表示六行编辑就足够了。在这种情况下,我们只需要纯文本,然后点击确定。
![Edit Site](/sharepoint/images/edit_site.jpg)
步骤 27 − 我们有了“作者”列表的模式。现在我们的模式已完成,让我们添加一些数据。点击“最近”下的作者。
让我们通过点击每个项目旁边的复选框来删除之前创建的两行。接下来,转到功能区上的“项目”,然后点击删除项目。
![Delete Item](/sharepoint/images/delete_item.jpg)
步骤 28 − 通过点击“新建项目”添加第一个项目。
![Add First Item](/sharepoint/images/add_first_item.jpg)
步骤 29 − 根据下面的截图输入更多数据。
![Enter Data](/sharepoint/images/enter_data.jpg)
您将看到所有列出的数据。
![Data Listed](/sharepoint/images/data_listed.jpg)
SharePoint - 库
本章将介绍库。库只是列表的一种特殊情况。它们继承了列表的所有特性。因此,我们迄今为止看到的所有特性,都适用于库,就像它们适用于列表一样。
列表和库的区别
虽然列表和库表现出相似的特性,但以下是一些区别:
主要区别在于,在库中,每一行都与一个文档相关联。此文档可以是任何类型的文档。例如,办公文档、图片、网页、WordPerfect文档等。使用办公文档的优势在于它与实际的办公工具本身集成。
另一个区别更多的是术语上的差异,而不是功能上的差异。例如,库中的列表示与文档相关的元数据。
创建文档库
在本节中,我们将了解使用文档库的基础知识。您可以像创建列表一样创建文档库。请按照以下步骤操作。
步骤 1 − 转到网站内容,然后单击“添加应用”。
![Document Library](/sharepoint/images/document_library.jpg)
步骤 2 − 单击文档库。为库命名,然后单击创建。
![Click Document Library](/sharepoint/images/click_document_library.jpg)
注意 − 在这里,我们将学习高级选项。
步骤 3 − 单击高级选项,并将文档库命名为课程文档。
我们还可以在这里设置版本,但我建议不要设置版本,因为库设置中没有相同的选项。但是,如果您想要启用版本控制,请在库设置中进行操作,而不是在这里。最后,我们可以选择我们想要作为默认模板的文档类型。我们将选择Word,然后单击创建。
![Course Documents](/sharepoint/images/course_documents.jpg)
步骤 4 − 在添加文档之前,我们需要添加几个列或字段。转到功能区上的库选项,然后单击库设置。
![Library Settings](/sharepoint/images/library_settings.jpg)
步骤 5 − 添加新列,此列将是将在课程列表的查找字段中显示的课程。单击确定。
![List of Courses](/sharepoint/images/list_of_courses.jpg)
步骤 6 − 我们再添加一列。我们将此列命名为编号,并将类型设置为数字。设置最小值和最大值,即分别为 0 和 100,然后单击确定。
![Column as Number](/sharepoint/images/column_as_number.jpg)
您可以看到架构已准备就绪。
![Schema](/sharepoint/images/schema.jpg)
向库添加文档
现在架构已准备就绪,我们可以添加一些文档了。添加文档的一种方法是直接在 SharePoint 中创建文档。
步骤 1 − 现在,让我们转到功能区上的文件选项卡。单击新建文档。
![Click New Document](/sharepoint/images/click_new_document.jpg)
步骤 2 − 您将看到 Word 已打开,在这里我们可以编辑文档的内容。
![Edit the Contents of the Document](/sharepoint/images/edit_the_contents_of_the_document.jpg)
步骤 3 − 在打开的 Word 页面中编写一些文本。
![Open Word Page](/sharepoint/images/open_word_page.jpg)
文档会自动保存,现在让我们返回到网站,您将看到已创建 Word 文档。
步骤 4 − 要编辑元数据字段的值,请单击小省略号。再次选择 Document.docx 对话框上的省略号,然后从选项中选择重命名。
![Metadata Fields](/sharepoint/images/metadata_fields.jpg)
步骤 5 − 输入所需信息,然后单击保存。
![Edit Metadata Fields](/sharepoint/images/edit_metadata_fields.jpg)
我们还可以通过上传的方式将文档添加到文档库。
步骤 6 − 您可以在此处使用新建文档进行上传。
![New Document](/sharepoint/images/new_document.jpg)
步骤 7 − 您也可以转到功能区上的文件选项卡,然后单击上传文档。
![Upload Document](/sharepoint/images/upload_document.jpg)
步骤 8 − 您将看到以下对话框。单击选择文件。
![Click Choose Files](/sharepoint/images/click_choose_files.jpg)
步骤 9 − 选择示例文件。单击打开。
![Sample File](/sharepoint/images/sample_file.jpg)
您将看到示例文档已添加到库列表中。
![Sample Document](/sharepoint/images/sample_document.jpg)
步骤 10 − 如果要上传多个文档,可以将它们拖放到此处。多个文档将被上传。
![Multiple Documents](/sharepoint/images/multiple_documents.jpg)
上传完成后,您将在列表中看到这些文档。
![Documents in List](/sharepoint/images/documents_in_list.jpg)
步骤 11 − 设置元数据的另一种方法是在库选项卡下,单击功能区上的快速编辑选项。
![Quick Edit](/sharepoint/images/quick_edit.jpg)
步骤 12 − 设置元数据后,单击功能区上的查看以返回到标准列表视图。
![Standard List View](/sharepoint/images/standard_list_view.jpg)
您将看到文档文件在列表中,如下面的屏幕截图所示。
![Document Files](/sharepoint/images/document_files.jpg)
SharePoint - Web 部件
本章将介绍 Web 部件。我们将限制我们的视图到列表视图 Web 部件,因为它与信息协作最密切相关。
Web 部件是用户界面的小型块,您可以将它们组合在一起以构建页面或网站。例如,新闻 Web 部件、电子邮件 Web 部件、股票 Web 部件、体育比分、YouTube 视频。这些都是用户界面的小片段示例,您可以将它们组合在一起以获得聚合视图,类似于门户样式的应用程序。
就信息协作而言,Web 部件被称为列表视图 Web 部件。它们显示来自列表或库的信息,并允许您添加新项目或文档。这样,您可以创建一个单页面,该页面显示网站中列表和库中的信息,从而无需用户自己导航到各个列表和库。
本章将重点介绍列表视图 Web 部件。这些是允许我们与列表或库数据交互的 Web 部件,但在过程中,您将大致了解 Web 部件在 SharePoint 中的工作方式。
让我们通过创建一个 Web 部件页面(即支持使用 Web 部件的页面)来看一个简单的示例。
步骤 1 − 转到网站内容。向下滚动并单击图标 - 网站页面。
![Site Pages](/sharepoint/images/site_pages.jpg)
步骤 2 − 转到文件选项卡。在功能区上,单击新建文档按钮上的下拉箭头。从选项中选择 Web 部件页面。
![FILES Tab](/sharepoint/images/files_tab.jpg)
步骤 3 − 将此页面命名为课程,然后我们需要确定页面的布局。因此,Web 部件被添加到 Web 部件区域。
此处的布局决定了这些区域的数量和布局。我们还可以了解这些区域的外观。
我们只有一个 Web 部件区域占据整个页面,一个页眉和一个列和一个正文,或者一个页眉和一个页脚和列等。
在这种情况下,我们只需要一个 Web 部件区域。因此,我们将选择全页面垂直,然后单击创建。
![Web Part Zone](/sharepoint/images/web_part_zone.jpg)
步骤 4 − 因此您可以看到 Web 部件区域及其内部部分。您可以看到一个链接,允许我们添加 Web 部件。单击该链接。
![Add a Web Part](/sharepoint/images/add_a_web_part.jpg)
步骤 5 − Web 部件库将打开。
此页面向我们显示可添加到页面的 Web 部件,这些 Web 部件被细分为不同的类别。
在本例中,我们感兴趣的 Web 部件位于应用类别中。
您会注意到,我们的网站中的每个列表和库都有一个 Web 部件。
![Web Part Gallery](/sharepoint/images/web_part_gallery.jpg)
步骤 6 − 您可以在 Web 部件中看到课程文档。现在让我们再次添加一个 Web 部件,然后单击课程列表并单击添加。
![Course List](/sharepoint/images/course_list.jpg)
步骤 7 − 添加完 Web 部件后,单击功能区上的停止编辑。
![Adding Web Parts](/sharepoint/images/adding_web_parts.jpg)
步骤 8 − 您有一个单页面,您可以在其中与课程列表和课程文档库进行交互。
![Course Documents Library](/sharepoint/images/course_documents_library.jpg)
步骤 9 − 如果要添加新文档,可以上传或拖放,您可以访问库和列表的编辑控件块菜单。
您可以通过导航到列表或库本身来执行所有主要任务。要维护页面上的 Web 部件,我们可以通过单击编辑页面从功能区将页面置于编辑模式。
![Edit Mode](/sharepoint/images/edit_mode.jpg)
步骤 10 − 您可以看到,对于每个 Web 部件,都有一個小下拉菜单,我们可以用它来删除 Web 部件。如果要删除 Web 部件,请始终单击删除,而不是关闭。关闭只会隐藏 Web 部件,但它仍然保留在页面上。删除会将 Web 部件从页面中移除。
![Delete Web Part](/sharepoint/images/delete_web_part.jpg)
步骤 11 − 我们可以通过单击菜单中的编辑 Web 部件来编辑 Web 部件属性。您可以在属性中看到不同的选项,您可以指定要在 Web 部件中显示哪个视图,以及想要使用哪个工具栏。您还可以更改外观、布局等。
![Edit Web Part](/sharepoint/images/edit_web_part.jpg)
SharePoint - 网站列和内容类型
本章将介绍网站列。到目前为止,我们一直在列表和库本身定义列表和库架构,但这些架构不可重用。因此,如果您想要有两个具有相同架构的列表,我们将不得不两次定义相同的架构。SharePoint 为此提供了解决方案,即网站列和内容类型。
网站列定义可重用的列定义,而内容类型则由网站列组成,定义列表和库的可重用架构。
除了定义架构外,您还可以将工作流和事件处理程序附加到内容类型。网站列和内容类型存储在站点级别的库中,它们可在该站点及其任何子站点中使用。
如果您在子站点中声明网站列或内容类型,则它仅在其下属分支中可用。
除非有特定原因不这样做,否则通常的做法是在网站集根目录中声明您的网站列和内容类型,这样它们就可以在整个网站集中使用。
现在让我们来看一个简单的例子,在这个例子中我们将创建和使用网站列和内容类型。我们已经看到了内容类型,尽管它可能并不明显。
步骤 1 − 通过网站内容转到我们的联系人列表。
![Site Columns](/sharepoint/images/site_columns.jpg)
步骤 2 − 如果向下滚动,您将看到一个名为列的部分。
![Columns](/sharepoint/images/columns.jpg)
步骤 3 − 转到高级设置。为允许管理内容类型选择是,然后单击确定。
![Advanced Settings](/sharepoint/images/advanced_settings.jpg)
您将看到这里有一个名为内容类型的新部分。这表示此列表基于联系人内容类型。
![Contact Content Type](/sharepoint/images/contact_content_type.jpg)
步骤 4 − 转到网站设置。
![Site Settings](/sharepoint/images/site_settings.jpg)
步骤 5 − 在 Web 设计器库下,单击网站内容类型。
![Site Content Types](/sharepoint/images/site_content_types.jpg)
步骤 6 − 向下滚动页面,您将找到联系人内容类型,它位于列表内容类型下,然后单击联系人链接。
![Contact Content Types](/sharepoint/images/contact_content_types.jpg)
步骤 7 − 如果您查看列,您将看到它与我们列表中的列匹配。基本上,当您创建联系人列表模板的列表时,它会将此内容类型与列表关联,这就是您获得所有这些字段的原因。
现在,构成内容类型定义的字段称为网站列。
要查看网站列,我们可以转到网站设置,然后在网页设计器库中选择网站列。
![Web Designer Galleries](/sharepoint/images/web_designer_galleries.jpg)
步骤 8 − 你可以看到与联系人关联的列。让我们更深入地探索一下,创建我们自己的自定义网站列和自定义内容类型,然后在列表中使用它们。在我们的课程文档库中,我们有一列用于课程,我们在库本身中定义了这一列。
![Own Custom Site Columns](/sharepoint/images/own_custom_site_column.jpg)
步骤 9 − 也许在构建网站的过程中,你意识到你希望在一些列表和库中添加课程列,并且希望重用该定义。因此,我们可以将课程列创建为网站列,然后在不同的列表和库中使用它。
让我们从网站设置中转到网站列。
![Different Lists](/sharepoint/images/different_lists.jpg)
步骤 10 − 点击“创建”链接。
![Create Link](/sharepoint/images/create_link.jpg)
步骤 11 − 将其命名为“课程”列,它将是一个查找字段。
![Course Column](/sharepoint/images/course_column.jpg)
步骤 12 − 将其放入名为“SharePoint 基础知识”的组中,以便我们稍后可以轻松找到它。它将查找课程列表,我们想要查找的字段是标题。点击“确定”。
![SharePoint Basics](/sharepoint/images/sharepoint_basics.jpg)
步骤 13 − 你将看到创建了一个新的组“SharePoint 基础知识”。
![New Group SharePoint Basics](/sharepoint/images/new_group_sharepoint_basics.jpg)
步骤 14 − 我们的新网站列已在“SharePoint 基础知识”组中创建。
![SharePoint Basics Group](/sharepoint/images/sharepoint_basics_group.jpg)
步骤 15 − 让我们返回到课程文档,然后转到库设置。转到列。
![Library Settings Columns](/sharepoint/images/library_settings_columns.jpg)
删除我们在库本身中创建的课程列。
步骤 16 − 让我们从网站列中添加新的课程列。因此,不要点击“创建列”,而是点击“从现有网站列添加”。
![Add from Existing Site columns](/sharepoint/images/add_from_existing_site_columns.jpg)
步骤 17 − 将组更改为“SharePoint 基础知识”,并在左侧选择“课程”。点击“添加”将该列添加到列表中,然后点击“确定”。
![Add Columns from Site Columns](/sharepoint/images/add_columns_from_site_columns.jpg)
步骤 18 − 让我们返回到课程文档。
![Back to Course Document](/sharepoint/images/back_to_course_document.jpg)
步骤 19 − 你可以看到我们的新的课程列,但它是空的,因为当我们删除原始课程列时,这里的信息被删除了。因此,让我们将其添加回来,如下所示。
![Original Course Column](/sharepoint/images/original_course_column.jpg)
如果此列表包含数百个项目,则可以将一项可能需要数小时的任务变成一项可能只需几分钟的任务。
内容类型
在本节中,我们将了解如何创建自定义内容类型。
步骤 1 − 让我们转到网站设置,然后转到网站内容类型。点击“创建”链接。
![Site Content Type](/sharepoint/images/site_content_type.jpg)
在创建内容类型时,需要考虑两个关键因素。
首先,所有内容类型都基于另一种内容类型,或者你可以将其理解为所有内容类型都继承自另一种内容类型。
其次,内容类型要么与列表一起使用,要么与库一起使用。它与列表还是库一起使用取决于你继承的类型。
例如,如果我们想创建一个自定义联系人列表,我们将转到“列表内容类型”,然后找到“联系人”。我们将创建内容类型,添加我们需要的、还不是“联系人”一部分的内容,或删除我们不需要的“联系人”一部分的内容。
创建内容类型时可以使用的一种策略是找到一个已经包含你所需的大部分内容的内容类型,从中继承,然后对其进行自定义。
另一种策略是从基本内容类型开始,然后在其基础上构建。
对于列表,那是项目内容类型。对于库,你需要从文档继承,因此我们将转到“文档内容类型”。
步骤 2 − 我们的内容类型将用于与课程相关的文档库。这就是我们在继承方面想要的。
![Document Libraries Related to courses](/sharepoint/images/document_libararies_related_to_courses.jpg)
步骤 3 − 让我们将其命名为“课程文档”类型。就像我们对网站列所做的那样,我们将将其放入一个组中,以便我们可以轻松识别它,该组名称将是“SharePoint 基础知识”。点击“确定”。
![Course Documents Type](/sharepoint/images/course_documents_type.jpg)
步骤 4 − 你可以在下面的屏幕截图中看到,从文档内容类型中已经存在几个字段,文件名和标题。我们将添加课程字段。现在,我们不能只向内容类型添加列,列必须是网站列。因此,我们将选择“从现有网站列添加”,然后对“SharePoint 基础知识”组应用筛选器。
![File Name and Title](/sharepoint/images/file_name_and_title.jpg)
步骤 5 − 选择课程列,点击“添加”,然后点击“确定”。
![Select the Course Column](/sharepoint/images/select_the_course_column.jpg)
在本例中,这就是我们想要对内容类型进行的所有自定义,因此我们现在可以使用它了。
步骤 6 − 让我们通过点击“网站内容→添加应用程序”创建一个文档库。
![Create Document Library](/sharepoint/images/create_document_library.jpg)
步骤 7 − 我们将此库命名为“测试”,然后点击“创建”。打开测试库并将课程文档类型设置为该库的内容类型。转到功能区上的库,然后转到库设置。
![Library Test](/sharepoint/images/library_test.jpg)
步骤 8 − 要管理内容类型,请转到高级设置。
![Advance Settings](/sharepoint/images/advance_settings.jpg)
步骤 9 − 将“允许管理内容类型”设置为“是”,然后点击“确定”。
![Management of Content Types](/sharepoint/images/management_of_content_types.jpg)
步骤 10 − 你可以看到此库目前与文档内容类型关联。我们需要通过点击“从现有网站内容类型添加”来添加我们的课程内容类型。
![Add our Course Content Type](/sharepoint/images/add_our_course_content_type.jpg)
步骤 11 − 再次在“SharePoint 基础知识”中对其进行筛选。选择“课程文档”类型,点击“添加”,然后点击“确定”。
![Select Course Document Type](/sharepoint/images/select_course_document_type.jpg)
现在,我们的库与两种内容类型关联:文档内容类型和课程文档类型。
![Our Library](/sharepoint/images/our_library.jpg)
步骤 12 − 接下来,转到“测试”库,然后点击“新建文档”。
当你点击“新建文档”或下拉箭头时,你可以看到我们可以创建任一类型的文档。现在,如果你只想让人们能够创建课程文档,只需返回库设置。通过点击“内容类型”部分中的“文档”来删除文档内容类型的关联。
![Test Library](/sharepoint/images/test_library.jpg)
步骤 13 − 点击“删除此内容类型”。返回库并点击“文件”,然后点击“新建文档”。
![Click Files](/sharepoint/images/click_files.jpg)
现在你可以看到只有“课程文档”类型选项可用。这些是 SharePoint 中使用内容类型的基础知识。
![Course Document Type option](/sharepoint/images/course_document_type_option.jpg)
SharePoint - 数据
在本章中,我们将介绍 SharePoint 最常见的一项任务,即与各种数据源(如列表或文档库)交互。SharePoint 的一个优点是,你可以使用多种选项与数据进行交互。例如,服务器对象模型、客户端对象模型、REST 服务等。
在你可以以编程方式对 SharePoint 执行任何操作之前,你需要与 SharePoint 网站建立连接和上下文。但是,为此我们需要 SharePoint 本地版本,可以安装在 Windows Server 上。
你需要在你的项目中添加对Microsoft.SharePoint.dll或Microsoft.SharePoint.Client.dll的引用。将适当的引用添加到你的项目后,你就可以开始设置上下文并在该上下文中编写代码了。
让我们来看一个简单的例子。
步骤 1 − 打开 Visual Studio 并从文件→新建→项目菜单选项创建一个新项目。
步骤 2 − 在左侧窗格中从模板→Visual C#选择 Windows,然后在中间窗格中选择控制台应用程序。输入你的项目名称,然后点击“确定”。
步骤 3 − 创建项目后,在解决方案资源管理器中右键单击该项目,然后选择“添加→引用”。
![Console Application](/sharepoint/images/console_application.jpg)
步骤 4 − 在左侧窗格中选择“程序集→扩展”,然后在中间窗格中选中“Microsoft.SharePoint”,然后点击“确定”。
现在再次在解决方案资源管理器中右键单击项目,然后选择“属性”。
![Assemblies](/sharepoint/images/assemblies.jpg)
步骤 5 − 点击左侧窗格中的“生成”选项卡,然后取消选中“首选 32 位”选项。
![Build Tab](/sharepoint/images/build_tab.jpg)
步骤 6 − 现在返回到Program.cs文件,并将其替换为以下代码。
using Microsoft.SharePoint; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SharePointData { class Program { static void Main(string[] args) { using (var site = new SPSite("http://waqasserver/sites/demo")) { var web = site.RootWeb; Console.WriteLine(web.Title); var lists = web.Lists; foreach (SPList list in lists) { Console.WriteLine("\t" + list.Title); } Console.ReadLine(); } } } }
注意 − 在上面的代码中,首先创建了一个新的 SPSite 对象。这是一个可处置对象,因此它是在 using 语句中创建的。SPSite 构造函数接收站点集合的 URL,在你的情况下这将有所不同。
var web = site.RootWeb 将获取站点集合的根目录。
我们可以使用 web.Lists 获取列表并打印列表项的标题。
编译并执行上述代码后,你将看到以下输出:
SharePoint Tutorials appdata Composed Looks Documents List Template Gallery Master Page Gallery Site Assets Site Pages Solution Gallery Style Library Theme Gallery User Information List Web Part Gallery
SharePoint - 服务器对象模型
在本章中,我们将了解 SharePoint 服务器对象模型。当你编写将在 SharePoint 上下文中运行的代码时,可以使用 SharePoint 服务器对象模型。一些常见的示例包括页面或 Web 部件中的代码隐藏、功能或列表后面的事件处理程序、计时器作业等。
服务器对象模型的功能
以下是服务器对象模型的关键功能
如果要在与 SharePoint 使用的应用程序池相同的应用程序池中编程 ASP.NET 应用程序,则可以使用服务器对象模型。
如果要开发将在 SharePoint 服务器上运行的客户端应用程序(如控制台或 Windows 窗体或 WPF 应用程序),则可以使用服务器对象模型。
你不能使用服务器对象模型远程连接到 SharePoint 服务器。
当你想要使用服务器对象模型时,请参考Microsoft.SharePoint程序集。还有其他程序集构成服务器对象模型,但 Microsoft.SharePoint 是主要的程序集。
你最常用的一些核心类型映射到你作为最终用户使用的组件,因此诸如站点集合、站点、列表、库和列表项之类的组件由类型 SPSite、SPWeb、SPList、SPDocumentLibrary 和 SPListItem 表示。
表示站点集合的类型和服务器对象模型是 SPSite,表示服务器对象模型中 SharePoint 站点的类型是 SPWeb。因此,当你从最终用户术语转向开发人员术语时,只需进行这种心理映射即可。
现在,当你第一次开始使用 SharePoint 时,可能会令人困惑,因为“站点”一词被过度使用,并且在最终用户和开发人员词汇表中具有相反的含义,更不用说 Web 词汇表了。
让我们来看一个服务器对象模型的简单示例。
步骤 1 − 打开 Visual Studio 并从文件→新建→项目菜单选项创建一个新项目。
步骤 2 − 在左侧窗格中从模板→Visual C#选择 Windows,然后在中间窗格中选择控制台应用程序。输入你的项目名称,然后点击“确定”。
步骤 3 − 创建项目后,在解决方案资源管理器中右键单击该项目,然后选择“添加→引用”。
![Console Application](/sharepoint/images/console_application.jpg)
步骤 4 − 在左侧窗格中选择“程序集→扩展”,然后在中间窗格中选中 Microsoft.SharePoint,然后点击“确定”按钮。
现在再次在解决方案资源管理器中右键单击项目,然后选择“属性”。
![Assemblies](/sharepoint/images/assemblies.jpg)
步骤 5 − 点击左侧窗格中的“生成”选项卡,然后取消选中“首选 32 位”选项。
![Build Tab](/sharepoint/images/build_tab.jpg)
步骤 6 − 现在返回到Program.cs文件,并将其替换为以下代码。
using Microsoft.SharePoint; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SharePointData { class Program { static void Main(string[] args) { using (var site = new SPSite("http://waqasserver/sites/demo")) { var web = site.RootWeb; Console.WriteLine(web.Title); var lists = web.Lists; foreach (SPList list in lists) { Console.WriteLine("\t" + list.Title); } Console.ReadLine(); } } } }
注意 − 在上面的代码中,首先创建了一个新的 SPSite 对象。这是一个可处置对象,因此它是在 using 语句中创建的。SPSite 构造函数接收站点集合的 URL,在你的情况下这将有所不同。
var web = site.RootWeb 将获取站点集合的根目录。
我们可以使用 web.Lists 获取列表并打印列表项的标题。
编译并执行上述代码后,你将看到以下输出:
SharePoint Tutorials appdata Authors Composed Looks Contacts Course Documents Courses Documents List Template Gallery Master Page Gallery Site Assets Site Pages Solution Gallery Style Library Theme Gallery User Information List Web Part Gallery
你可以看到这些标题是解决方案库、样式库、表单模板。这些是 SharePoint 内部使用的列表。因此,与其显示所有列表,不如只显示用户通常会看到的列表。
因此,与其获取整个列表集合,我们只想获取所有未隐藏的列表。我们可以使用如下所示的链接查询来实现。
using Microsoft.SharePoint; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ServerObjectModel { class Program { static void Main(string[] args) { using (var site = new SPSite("http://waqasserver/sites/demo")) { var web = site.RootWeb; Console.WriteLine(web.Title); var lists = from SPList list in web.Lists where list.Hidden == false select list; foreach (SPList list in lists) { Console.WriteLine("\t" + list.Title); } Console.ReadLine(); } } } }
编译并执行上述代码后,你将看到以下输出:
SharePoint Tutorials Authors Contacts Course Documents Courses Documents Site Assets Site Pages Style Library
您可以看到,这将返回所有未隐藏的列表。
让我们来看另一个简单的例子,在这个例子中,我们还将显示一些关于列表项的信息。
using Microsoft.SharePoint; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ServerObjectModel { class Program { static void Main(string[] args) { using (var site = new SPSite("http://waqasserver/sites/demo")) { var web = site.RootWeb; Console.WriteLine(web.Title); var lists = from SPList list in web.Lists where list.Hidden == false select list; foreach (SPList list in lists) { Console.WriteLine("\t" + list.Title); var items = list.Items.OfType<SPListItem>().Take(5); var isDocLib = list is SPDocumentLibrary; foreach (SPListItem item in items) { var value = isDocLib ? item.Name : item.Title; Console.WriteLine("\t\t" + value); } } Console.ReadLine(); } } } }
编译并执行上述代码后,你将看到以下输出:
SharePoint Tutorials Authors Muhammad Waqas Mark Upston Allan Bommer Andy Onian Contacts Waqas Upston Bommer Course Documents Sample1.docx Sample2.docx Sample3.docx Courses SharePoint Tutorials C# Tutorials ASP.Net Tutorials NHibernate Tutorials Documents Site Assets Site Pages Home.aspx How To Use This Library.aspx Style Library
列表数据
首次创建列表时,它始终包含一个标题列。默认情况下,此“标题”列可访问列表项上下文或编辑控件块菜单。
由于每个列表都以“标题”列开头,因此**SPListItem**类型将其公开为属性。对于并非每个列表都共有的列,可以通过**SpListItem**类型的索引器访问它们。
您可以向索引器传递几条信息,但最常见的是**Column**。列表设置中的最终用户可以更改此名称。您不应使用此名称,因为它可能会更改。
第二个是**InternalName**,它在创建此列表时设置,并且永远不会更改。当您访问列值时,这就是您要使用的名称。
让我们来看一个简单的例子,在这个例子中,我们将检索如下所示的“作者”列表:
![Simple Example](/sharepoint/images/simple_example.jpg)
在这个例子中,我们将获取“作者”列表,然后将薪资/费率提高某个值。因此,对于“薪资/费率”列,我们将使用**InternalName**。
**步骤 1** - 转到服务器资源管理器;右键单击**SharePoint 连接**,然后选择“添加连接...” 指定 URL 并单击“确定”。
![SharePoint Connections](/sharepoint/images/sharepoint_connections.jpg)
**步骤 2** - 展开**SharePoint 教程 → 列表库 → 列表 → 作者 → 字段 → 薪资/费率**字段。右键单击**薪资/费率**并选择“属性”。您将在“属性”窗口中看到**InternalName**。
![SharePoint Tutorials](/sharepoint/images/sharepoint_tutorials.jpg)
**步骤 3** - 下面是一个根据薪资/费率检索作者并提高其薪资/费率的简单示例。
using Microsoft.SharePoint; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ServerObjectModel { class Program { static void Main(string[] args) { using (var site = new SPSite("http://waqasserver/sites/demo")) { var web = site.RootWeb; var list = web.Lists.TryGetList("Authors"); if (list == null) return; var items = list.Items; ShowItems(items); RaiseRates(items); Console.WriteLine("\nAfter Raise\n"); ShowItems(items); Console.ReadKey(); } } static void RaiseRates(SPListItemCollection items) { foreach (SPListItem item in items) { var employee = Convert.ToBoolean(item["Employee"]); var rate = Convert.ToDouble(item["Salary_x002f_Rate"]); var newRate = employee ? rate + 1 : rate + 0.1; item["Salary_x002f_Rate"] = newRate; item.Update(); } } static void ShowItems(SPListItemCollection items) { foreach (SPListItem item in items) { Console.WriteLine("Salary or rate for {0} is {1:c}", item.Title, item["Salary_x002f_Rate"]); } } } }
在上面的代码中,您可以看到我们有两个方法:
一个是检索名为**ShowItems**的列表,以及
另一个是提高名为**RaiseRates()**的费率的方法。
编译并执行上述代码后,你将看到以下输出:
Salary or rate for Muhammad Waqas is $950.00 Salary or rate for Mark Upston is $15.00 Salary or rate for Allan Bommer is $20.00 Salary or rate for Andy Onian is $870.00 After Raise Salary or rate for Muhammad Waqas is $951.00 Salary or rate for Mark Upston is $15.10 Salary or rate for Allan Bommer is $20.10 Salary or rate for Andy Onian is $871.00
CAML 查询
在上面的示例中,我们总是使用 foreach 循环多次迭代遍历所有项,并且我们总是带回所有列,或者至少所有列都是可访问的。
这实际上类似于在 SQL 查询中执行 select * from 表名。
我们可以通过使用所谓的**CAML 查询**来解决这个问题。执行 CAML 查询时,您有两个选项:
如果您只想查询单个列表,可以使用 SPQuery 对象。
如果您想查询网站集中的多个列表,则可以使用 SPSiteDataQuery。
通常,当您执行**SPSiteDataQuery**时,您正在查询特定类型的所有列表。
例如,我想查询所有联系人列表等。SPSiteDataQuery 允许您确定范围,因此您可以指示您要查询整个网站集、单个网站或网站及其所有子网站。
CAML 查询的语法基本上是用 XML 格式描述的,构建此类查询需要一些时间才能习惯。
让我们来看一个 CAML 查询的简单示例。在这里,我们将创建一个 CAML 查询来查询我们的“作者”列表中的数据。
using Microsoft.SharePoint; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ServerObjectModel { class Program { static void Main(string[] args) { using (var site = new SPSite("http://waqasserver/sites/demo")) { var web = site.RootWeb; var list = web.Lists.TryGetList("Authors"); if (list == null) return; var items = QueryItems(list); ShowItems(items); //RaiseRates(items); //Console.WriteLine("\nAfter Raise\n"); //ShowItems(items); Console.ReadKey(); } } static SPListItemCollection QueryItems(SPList list) { var query = new SPQuery(); query.ViewFields = "<FieldRef Name='Title' />" + "<FieldRef Name='Employee' />" + "<FieldRef Name='Salary_x002f_Rate' />"; query.Query = "<OrderBy>" + " <FieldRef Name='Salary_x002f_Rate' />" + "</OrderBy>" + "<Where>" + " <Eq>" + " <FieldRef Name='Employee' />" + " <Value Type='Boolean'>False</Value>" + " </Eq>" + "</Where>"; return list.GetItems(query); } static void RaiseRates(SPListItemCollection items) { foreach (SPListItem item in items) { var employee = Convert.ToBoolean(item["Employee"]); var rate = Convert.ToDouble(item["Salary_x002f_Rate"]); var newRate = employee ? rate + 1 : rate + 0.1; item["Salary_x002f_Rate"] = newRate; item.Update(); } } static void ShowItems(SPListItemCollection items) { foreach (SPListItem item in items) { Console.WriteLine("Salary or rate for {0} is {1:c}", item.Title, item["Salary_x002f_Rate"]); } } } }
我们使用 CAML 查询获取了一些项目。在**QueryItems**方法中,您可以看到我们只检索了那些不是“员工”的项目。
Salary or rate for Mark Upston is $15.10 Salary or rate for Allan Bommer is $20.10
SharePoint - 客户端对象模型
在本章中,我们将了解客户端对象模型或 CSOM。这是添加到 SharePoint 2010 的用于构建远程应用程序的两个 API 之一。
客户端对象模型的设计目标之一是尽可能模仿服务器对象模型,以便已经熟悉在服务器端进行开发的开发人员的学习曲线更短。
客户端对象模型的核心是一个名为 Client.svc 的 Web 服务,它位于**_vti_bin**虚拟目录中。我们不应该直接与 Client.svc 通信,但我们得到了三个代理或入口点,我们可以使用它们。它们是:
- .NET 托管代码。
- JavaScript。
- JavaScript。
代码与这些代理通信,然后这些代理最终与 Web 服务通信。
由于这是一个远程 API,并且通过 Web 服务调用与 SharePoint 通信,因此客户端对象模型旨在允许我们批量处理命令和信息请求。
.NET 托管代码
.NET 托管实现的两个核心程序集是:
**Microsoft.SharePoint.Client.dll** 和 **Microsoft.SharePoint.Client.Runtime.dll。**
Silverlight 代码
Silverlight 实现的程序集位于**TEMPLATE\LAYOUTS\ClientBin**中。程序集名称也以**Microsoft.SharePoint.Client**开头。对于除一个程序集之外的所有程序集,程序集名称以 Silverlight 结尾。
Silverlight 实现的两个核心程序集是:
- Microsoft.SharePoint.Client.Silverlight.dll
- Microsoft.SharePoint.Client.Silverlight.Runtime.dll
JavaScript
客户端对象模型的 JavaScript 实现位于 SharePoint 系统根目录下的 TEMPLATE\LAYOUTS 文件夹中。JavaScript 库名称均以 SP 开头。三个核心库是**SP.js、Sp.Runtime.js**和**SP.Core.js**。
客户端对象模型在 SharePoint 2013 中进行了扩展。
使用 .NET 使用 Load 检索资源
让我们来看一个简单的示例,在这个示例中,我们将使用 Windows 窗体应用程序的客户端对象模型的托管实现。因此,首先我们需要创建一个新项目。
**步骤 1** - 在中间窗格中选择**Windows 窗体应用程序**,并在“名称”字段中输入名称。单击“确定”。
![Windows Forms Application](/sharepoint/images/windows_forms_application.jpg)
**步骤 2** - 项目创建后,让我们添加一个列表框和一个按钮,如下所示。要使用客户端对象模型,我们需要添加几个程序集引用。右键单击“引用”,然后选择“添加引用”。
![List Box](/sharepoint/images/list_box.jpg)
**步骤 3** - 在**程序集**下的左侧窗格中选择**扩展**。
客户端对象模型的托管实现的两个核心程序集是**Microsoft.SharePoint.Client**和**Microsoft.SharePoint.Client.Runtime**。选中这两个选项,然后单击“确定”。
![Microsoft SharePoint Client Runtime](/sharepoint/images/microsoft_sharepoint_client_runtime.jpg)
现在双击“加载”按钮以添加如下所示的事件处理程序。
using Microsoft.SharePoint.Client; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace ClientObjectModel { public partial class Form1 : Microsoft.SharePoint.Client.Form { public Form1() { InitializeComponent(); } private void loadBtn_Click(object sender, EventArgs e) { using (var context = new ClientContext("http://waqasserver/sites/demo")) { var web = context.Web; context.Load(web); context.Load(web.Lists); context.ExecuteQuery(); ResultListBox.Items.Add(web.Title); ResultListBox.Items.Add(web.Lists.Count); } } } }
客户端对象模型的入口点是客户端上下文。它是**SPContext**对象的客户端版本的远程版本。这是一个可处置类型,因此它包装在一个**using**语句中。我们在**ClientContext**中传递 SharePoint 网站的 URL。
所以现在,我们有了上下文。我们需要一个对象来表示当前站点,那就是**var web = context.web**。
**注意** - 请记住,此对象只是一个空壳,因此我们需要使用 context.load 加载 Web 对象并传递 Web 对象。这表示我们希望在下一个批处理检索中填充 Web 对象属性。
接下来,我们需要调用**context.ExecuteQuery**,这实际上启动了批处理检索。我们从服务器检索属性值并添加到列表框中。
编译并执行上述代码后,你将看到以下输出:
![Content Execute Query](/sharepoint/images/content_execute_query.jpg)
单击“加载”按钮,您将看到我们同时获得了列表的标题和计数。
它使我们的项目设置能够使用客户端对象模型来使用 load 方法检查加载资源。
SharePoint - REST API
在本章中,我们将介绍 REST API。这不是一个传统的 API,在传统的 API 中,我们有一组包含类型和方法的库。
REST API 是作为基于开放数据协议或 OData 的以数据为中心的 Web 服务实现的。这些 Web 服务的工作方式是使用系统中的每个资源,都可以通过您传递给服务器的特定 URL 来寻址。
让我们在打开 SharePoint 站点的 Internet Explorer 中查看这一点。
**步骤 1** - 如果你使用的是 Internet Explorer,请转到 Internet Explorer 设置,然后在“内容”选项卡上,选择“Feed 和 Web 片段”的设置,如下面的屏幕截图所示。
![Internet Options](/sharepoint/images/internet_options.jpg)
您将看到以下对话框。确保**Feed 阅读视图**为**关闭**,然后单击“确定”。
**步骤 2** - 现在让我们将 URL 更改为站点 URL +/_api/web 并按 Enter 键。
![Feed and Web Slice Settings](/sharepoint/images/feed_and_web_slice_settings.jpg)
现在您应该会看到如下面的屏幕截图所示的视图。
我们想要关于当前 Web 或当前站点的信息。因此,站点 URL +/_api 是 SharePoint 2013 REST API 的基本 URL,而 web 是我们的查询。我们想要关于当前 Web 的信息。
我们返回一个 XML 文档,如果我们向下滚动,我们将获得关于我们当前 Web 的信息。
![XML Document](/sharepoint/images/xml_document.jpg)
接下来,如果您想知道 Web 中的列表,您可以将列表附加到您的 URL。我们不会获得关于单个对象的的信息,而是会获得关于当前站点中所有列表的信息集合。
![Lists in Web](/sharepoint/images/lists_in_web.jpg)
当我们使用浏览器时,我们正在向服务器发出 get 请求,这意味着我们想要检索信息。但是,我们也可以执行其他标准 CRUD 操作。
![CRUD Operations](/sharepoint/images/crud_operations.jpg)
使用 REST API 检索资源
SharePoint 2013 REST API 不公开元数据。因此,当我们在托管代码中使用它时,我们无法使用 Visual Studio 通过服务引用对话框生成服务代理。相反,我们可以使用类似于 http web 请求对象的 web 客户端的类型来向服务器发送请求,并只获取原始结果。
这些结果是作为 XML 还是 JSON 返回取决于我们与请求一起发送的 accept header。
如果我们获得 XML,那么我们可以使用 LINQ to XML 从响应中检索应用程序所需的信息。
如果我们得到JSON响应,那么我们可以使用各种JSON序列化器将JSON解析成.NET对象,然后使用它来检索我们所需的信息。
在JavaScript中使用REST API时,我们可以使用jQuery或SP.RequestExecutor对象来调用服务。就像在托管代码示例中一样,我们可以使用Accept标头来控制我们是否获得XML或JSON响应。由于我们大多数时候都在使用JavaScript,所以我们通常希望获得JSON响应。
需要注意的另一点是,当构建服务的URL时,我们可以使用**_spPageContextInfo**对象获取站点的绝对URL,然后将服务URL加上查询附加到它。这是因为REST API服务不公开元数据,并且无法在Visual Studio中创建服务引用,因此在托管代码中使用REST API实际上是不可行的。
让我们来看一下通过创建一个新项目如何从JavaScript调用REST API。
**步骤1** - 在中间面板中选择**SharePoint应用程序**,并输入项目的名称。单击**确定**。
![App SharePoint](/sharepoint/images/app_sharepoint.jpg)
**步骤2** - 输入您的站点URL,选择**SharePoint托管**选项,然后单击下一步。单击完成。
![SharePoint Hosted](/sharepoint/images/sharepoint_hosted.jpg)
**步骤3** - 项目创建完成后,让我们打开Default.aspx页面(位于解决方案资源管理器中的Pages下),并添加一个按钮。
以下是Default.aspx文件的完整实现。
<%-- The following 4 lines are ASP.NET directives needed when using SharePoint components --%> <%@ Page Inherits = ”Microsoft.SharePoint.WebPartPages.WebPartPage, Microsoft.SharePoint, Version = 15.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c” MasterPageFile = ”~masterurl/default.master” Language = ”C#” %> <%@ Register TagPrefix = ”Utilities” Namespace = ”Microsoft.SharePoint.Utilities” Assembly = ”Microsoft.SharePoint, Version = 15.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c” %> <%@ Register TagPrefix = ”WebPartPages” Namespace = ”Microsoft.SharePoint.WebPartPages” Assembly = ”Microsoft.SharePoint, Version = 15.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c” %> <%@ Register TagPrefix = ”SharePoint” Namespace = ”Microsoft.SharePoint.WebControls” Assembly = ”Microsoft.SharePoint, Version = 15.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c” %> <%-- The markup and script in the following Content element will be placed in the <head> of the page --%> <asp:Content ContentPlaceHolderID = ”PlaceHolderAdditionalPageHead” runat = ”server”> <script type = ”text/javascript” src = ”../Scripts/jquery-1.9.1.min.js”></script> <SharePoint:ScriptLink name = ”sp.js” runat = ”server” OnDemand = ”true” LoadAfterUI = ”true” Localizable = ”false” /> <meta name = ”WebPartPageExpansion” content = ”full” /> <!–Add your CSS styles to the following file -> <link rel = ”Stylesheet” type = ”text/css” href = ”../Content/App.css” /> <!–Add your JavaScript to the following file -> <script type = ”text/javascript” src = ”../Scripts/App.js”></script> </asp:Content> <%-- The markup in the following Content element will be placed in the TitleArea of the page --%> <asp:Content ContentPlaceHolderID = ”PlaceHolderPageTitleInTitleArea” runat = ”server”> Page Title </asp:Content> <%-- The markup and script in the following Content element will be placed in the <body> of the page --%> <asp:Content ContentPlaceHolderID = ”PlaceHolderMain” runat = ”server”> <div> <p id = ”message”> <!–The following content will be replaced with the user name when you run the app – see App.js -> initializing… </p> <input id = ”loadButton” type = ”button” value = ”Load” /> </div> </asp:Content>
**步骤4** - 打开App.js文件(位于解决方案资源管理器中的Script下),并将其替换为以下代码。
JQuery(document).ready(function () { JQuery("#loadButton").click(usingLoad) }); function usingLoad() { var context = SP.ClientContext.get_current(); var web = context.get_web(); context.load(web); context.executeQueryAsync(success, fail); function success() { var message = jQuery("#message"); message.text(web.get_title()); message.append("<br/>"); message.append(lists.get_count()); } function fail(sender, args) { alert("Call failed. Error: " + args.get_message()); } }
我们使用jQuery创建**document.ready**函数。在这里,我们只想将click事件处理程序附加到按钮。因此,我们使用选择器获取**loadButton**,然后使用**Load**添加click事件处理程序。
因此,当我们单击按钮时,我们想要做与托管版本演示中相同的事情,即显示网站的标题。
**步骤5** - 发布您的应用程序,您将看到以下文件 -
![Publish Application](/sharepoint/images/publish_application.jpg)
**步骤6** - 将此文件拖到您的SharePoint站点应用页面。
![Site Apps Page](/sharepoint/images/site_apps_page.jpg)
您将在列表中看到文件**JavaScriptDemo**。
![JavaScriptDemo](/sharepoint/images/javascriptdemo.jpg)
**步骤7** - 单击左侧面板中的“网站内容”,然后选择添加应用。单击**JavaScriptDemo**图标。
![JavaScriptDemo Icon](/sharepoint/images/javascriptdemo_icon.jpg)
**步骤8** - 单击**信任它**。
![Trust it](/sharepoint/images/trust_it.jpg)
**步骤9** - 现在您将看到您的应用程序。单击应用程序图标。
![Click App Icon](/sharepoint/images/click_app_icon.jpg)
**步骤10** - 当您单击“加载”按钮时,它将更新文本。
![Click Load Button](/sharepoint/images/click_load_button.jpg)
您可以看到更新后的文本。
![Updated Text](/sharepoint/images/updated_text.jpg)
SharePoint - 功能和元素
在本章中,我们将了解功能和元素。功能在某种程度上是SharePoint中的组件模型。它们允许您定义逻辑功能单元。
例如,您可能希望在站点内具有以下功能 -
创建一个具有特定架构的列表,
有一个页面显示该列表中的数据,然后
在站点的某个位置有一个链接或菜单选项以导航到该页面。
您可以创建一个功能,它定义了该逻辑功能分组。各个功能部件由元素定义。
因此,将会有一个元素 -
创建列表并设置架构。
将页面置备到您的SharePoint站点,以及
创建菜单选项或链接。
功能定义单元,然后元素定义该单元内的各个功能部件。我们讨论了三种类型的元素 -
一个列表实例来创建列表。
一个模块来置备页面。
一个自定义操作来创建菜单选项或链接。
但是,可以在SharePoint中创建许多其他类型的元素。关于功能,另一个需要理解的重要概念是激活和停用。
例如,如果最终用户希望将上述功能添加到他的站点,他将激活相应的特性,该特性将创建列表、添加菜单选项或链接,并将页面置备到他们的站点。稍后他可以停用该功能以删除该功能。
需要注意的是,在停用功能时,某些元素会自动删除。例如,SharePoint将自动删除由自定义操作定义的菜单选项或链接。
其他元素不会自动删除。因此,在我们的例子中,列表实例和页面不会自动删除。
因此,作为开发人员,您需要了解哪些元素会自动删除,哪些元素不会。如果您想删除那些不会自动删除的元素,您可以在**功能接收器**中编写代码。
让我们看看如何使用功能和元素。我们将从最终用户对功能的视图开始。
**步骤1** - 打开您的SharePoint站点。
![SharePoint Sites](/sharepoint/images/sharepoint_sites.jpg)
**步骤2** - 要转到站点设置,您有两个链接可以管理功能。
第一个链接**管理网站功能**位于“网站操作”下,允许您管理网站范围的功能。
另一个链接**网站集功能**位于“网站集管理”下,允许您管理网站集范围的功能。
![Manage Site Features](/sharepoint/images/manage_site_features.jpg)
**步骤3** - 如果单击这些链接中的任何一个,您将被带到一个页面,该页面显示当前活动和非活动的功能。对于每个功能,您都有一个选项来激活或停用该功能。
![Features of Site](/sharepoint/images/features_of_site.jpg)
让我们通过创建一个新的SharePoint解决方案空项目来看一个简单的例子。
**步骤1** - 我们称之为**FeaturesAndElements**,然后单击确定。
![Features and Elements](/sharepoint/images/features_and_elements.jpg)
**步骤2** - 指定您要使用的站点,然后选择**作为场解决方案部署**选项,然后单击完成。
![Deploy as a Farm Solution](/sharepoint/images/deploy_as_a_farm_solution.jpg)
我们首先要创建的功能。在解决方案资源管理器中,您可以看到一个Features文件夹,它目前是空的。
![Features Folder](/sharepoint/images/features_folder.jpg)
**步骤3** - 右键单击**Features**文件夹,然后选择**添加功能**。它会创建一个名为**Feature1**的功能,并打开功能设计器。默认标题是项目标题加上功能标题。
![Add Feature](/sharepoint/images/add_feature.jpg)
**步骤4** - 将功能从Feature1重命名为Sample。
标题和说明是用户在激活和停用功能的页面上看到的。
将标题设置为**示例功能**,将说明设置为**添加“联系人”列表和用于查看列表的页面**。我们还需要设置的是功能的范围,即激活范围。
它可以是场、Web应用程序、网站集或站点。在本例中,我们将置备一个列表和一个页面。由于两者都位于SharePoint站点中,因此我们将在此处选择Web。
![Sample Feature](/sharepoint/images/sample_feature.jpg)
**步骤5** - 让我们开始在我们的元素中添加功能。第一个元素将是列表,我们将创建一个联系人列表。右键单击您的项目,然后选择**添加→新建项...**
**步骤6** - 在中间面板中选择列表,并在名称字段中输入联系人。单击添加。
![Select List](/sharepoint/images/select_list.jpg)
**步骤7** - 您将看到列表创建向导。创建一个名为“联系人”的列表,该列表基于“联系人”列表。单击完成以创建列表,或至少创建最终将创建列表的元素。
![SharePoint Customization Wizard](/sharepoint/images/sharepoint_customization_wizard.jpg)
以下是列表设计器的屏幕截图。
![List Designer](/sharepoint/images/list_designer.jpg)
**步骤8** - 此设计器只是一个XML编辑器。打开Contacts下的Elements.xml文件,并添加以下数据。
<?xml version = "1.0" encoding = "utf-8"?> <Elements xmlns = "http://schemas.microsoft.com/sharepoint/"> <ListInstance Title = "Contacts" OnQuickLaunch = "TRUE" TemplateType = "105" FeatureId = "00bfea71-7e6d-4186-9ba8-c047ac750105" Url = "Lists/Contacts" Description = ""> <Data> <Rows> <Row> <Field Name = "ID">1</Field> <Field Name = "Last Name">Anders</Field> <Field Name = "First Name">Maria</Field> <Field Name = "Company">Alfreds Futerkiste</Field> <Field Name = "Business Phone">030-0074321</Field> </Row> <Row> <Field Name = "ID">2</Field> <Field Name = "Last Name">Hardy</Field> <Field Name = "First Name">Thomas</Field> <Field Name = "Company">Around the Horn</Field> <Field Name = "Business Phone">(171) 555-7788</Field> </Row> <Row> <Field Name = "ID">3</Field> <Field Name = "Last Name">Lebihan</Field> <Field Name = "First Name">Laurence</Field> <Field Name = "Company">Bon app'</Field> <Field Name = "Business Phone">91.24.45.40</Field> </Row> <Row> <Field Name = "ID">4</Field> <Field Name = "Last Name">Ashworth</Field> <Field Name = "First Name">Victoria</Field> <Field Name = "Company">B's Beverages</Field> <Field Name = "Business Phone">(171) 555-1212</Field> </Row> <Row> <Field Name = "ID">5</Field> <Field Name = "Last Name">Mendel</Field> <Field Name = "First Name">Roland</Field> <Field Name = "Company">Ernst Handel</Field> <Field Name = "Business Phone">7675-3425</Field> </Row> </Rows> </Data> </ListInstance> </Elements>
请注意以下几点 -
在**ListInstance**元素内,我们有一个名为**Data**的元素,其中包含一些行。
ListInstance将具有属性**Contacts**,无论我们是否在快速启动中显示。
我们希望一个基于联系人模板的列表。这里,**TemplateType**设置为**105**。这不是一个随机数,而是一个有意义的数字。
在SharePoint中可以使用的每种默认类型的列表(例如公告列表、任务列表、联系人列表等)都与之关联一个数字。因此,如果您将105更改为107,您将获得不同类型的列表。
**FeatureId**是与联系人列表定义关联的引导程序。
**步骤9** - 现在我们想要一个页面来显示此列表中的数据。右键单击您的项目,然后选择**添加→新建项...** 在中间面板中选择模块,在名称字段中输入SitePage,然后单击**添加**。
![Module](/sharepoint/images/module.jpg)
您将看到一个名为**SitePage**的节点,它包含两个文件:**Elements.xml**和**Sample.txt**文件。我们不想置备此sample.txt文件,但我们想要置备一个SitePage。
**步骤10** - 将文本文件重命名为**Contacts.aspx**,并替换以下代码 -
<%@ Assembly Name = "Microsoft.SharePoint, Version = 14.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" %> <%@ Page MasterPageFile = "~masterurl/default.master" meta:progid = "SharePoint.WebPartPage.Document" %> <%@ Register TagPrefix = "SharePoint" Namespace = "Microsoft.SharePoint.WebControls" Assembly = "Microsoft.SharePoint, Version = 14.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" %> <asp:Content ID = "Content2" runat = "server" ContentPlaceHolderID = "PlaceHolderMain"> <SharePoint:SPDataSource runat = "server" ID = "ContactsDataSource" DataSourceMode = "List" UseInternalName = "false"> <SelectParameters> <asp:Parameter Name = "ListName" DefaultValue = "Contacts" /> </SelectParameters> </SharePoint:SPDataSource> <SharePoint:SPGridView runat = "server" ID = "ContactsGridView" DataSourceID = "ContactsDataSource" AutoGenerateColumns = "false" RowStyle-BackColor = "#DDDDDD" AlternatingRowStyle-BackColor = "#EEEEEE"> <Columns> <asp:BoundField HeaderText = "Company" HeaderStyle-HorizontalAlign = "Left" DataField = "Company" /> <asp:BoundField HeaderText = "First Name" HeaderStyle-HorizontalAlign = "Left" DataField = "First Name" /> <asp:BoundField HeaderText = "Last Name" HeaderStyle-HorizontalAlign = "Left" DataField = "Last Name" /> <asp:BoundField HeaderText = "Phone" HeaderStyle-HorizontalAlign = "Left" DataField = "Business Phone" /> </Columns> </SharePoint:SPGridView> </asp:Content> <asp:Content ID = "PageTitle" ContentPlaceHolderID = "PlaceHolderPageTitle" runat = "server"> Contacts </asp:Content> <asp:Content ID = "PageTitleInTitleArea" ContentPlaceHolderID = "PlaceHolderPageTitleInTitleArea" runat = "server" > Contacts </asp:Content>
SitePage有一个**SP.DataSource**文件,我们将使用它来制作联系人列表数据,这是我们可以在页面中绑定的内容。**SP.GridView**将显示联系人信息。
那是我们的SitePage,现在让我们看看Feature。
![Site Page](/sharepoint/images/site_page.jpg)
请注意,在**功能中的项**中,联系人列表实例和模块已作为元素添加到我们的SitePage中。
Visual Studio理解,元素本身什么也做不了。元素需要成为一个功能的一部分。因此,当您添加一个元素时,您需要将其添加到功能中。
**步骤11** - 转到您的项目并右键单击,然后选择**添加→新建项...**
在这里,我们想要添加一个CustomAction,因此在中间面板中选择空元素,将其称为Action,然后单击添加。
![CustomAction](/sharepoint/images/customaction.jpg)
如果您回到您的功能,您会看到该元素现在已作为下图所示添加到功能中。
![Added Features](/sharepoint/images/added_features.jpg)
**步骤12** - 回到Action下的**Elements.xml**,并替换以下代码 -
<?xml version = "1.0" encoding = "utf-8"?> <Elements xmlns = "http://schemas.microsoft.com/sharepoint/"> <CustomAction Id = "SiteActionsToolbar" GroupId = "SiteActions" Location = "Microsoft.SharePoint.StandardMenu" Sequence = "100" Title = "Contacts" Description = "A page showing some sample data"> <UrlAction Url = "~site/SitePages/Contacts.aspx"/> </CustomAction> </Elements>
现在,如果您想添加链接或菜单选项,您需要定义要在其中添加的位置,它是由Location和GroupId组合定义的。此值的组合表示应将菜单选项添加到SiteActions菜单。
还有许多其他值的组合,它们会在SharePoint站点的其他位置添加链接或菜单。这是您需要研究的内容,以便找出在想要在SharePoint中的某个位置添加菜单选项时所需的正确值组合。
**步骤13** - 双击**功能**,您将看到功能设计器。功能设计器是功能清单(一个XML文档)的精美编辑器。
![Feature](/sharepoint/images/feature.jpg)
重要事项 -
功能定义元素的逻辑分组。在这里,我们的功能引用了我们刚刚创建的三个元素清单。
当您激活功能时,SharePoint将查看各个元素清单,并将列表、页面和链接添加到我们的SharePoint站点。
当您使用Visual Studio部署时,它会自动激活项目中的任何功能。由于我们要经历激活功能的过程,我们将告诉Visual Studio不要这样做。
**步骤14** - 通过转到SharePoint选项卡转到项目属性。将部署配置更改为**不激活**。
![No Activation](/sharepoint/images/no_activation.jpg)
让我们测试一下。
**步骤15** - 在解决方案资源管理器中右键单击您的项目,然后选择**部署**。它将打包项目中的所有内容并将其部署到您的SharePoint开发场。
![Deploy](/sharepoint/images/deploy.jpg)
成功部署后,您将在输出窗口中看到它。
**步骤16** - 转到SharePoint站点并刷新它。转到**站点设置→网站操作**。
![Site Actions](/sharepoint/images/site_actions.jpg)
**步骤17** - 选择管理网站功能,因为您的自定义功能是Web范围的,您将看到您的**示例功能**。您可以看到此功能尚未激活,因此让我们继续激活它。
![Web Scoped](/sharepoint/images/web_scoped.jpg)
您将在左侧面板中看到“联系人”列表。
![Contact List in Left Pane](/sharepoint/images/contact_list_in_left_pane.jpg)
步骤 18 − 点击“联系方式”,列表中的数据将显示。
![Contact Tab](/sharepoint/images/contact_tab.jpg)
步骤 19 − 前往“网站操作”菜单。这里有一个选项可以导航到“联系方式”页面。这就是我们的自定义操作。
![Site Actions Menu](/sharepoint/images/site_actions_menu.jpg)
步骤 20 − 如果你点击“联系方式”,你将看到你的网站页面,显示来自“联系方式”列表的数据。
![Data From Contacts List](/sharepoint/images/data_from_contacts_list.jpg)
SharePoint - 功能/事件接收器
本章我们将学习添加代码句柄。代码句柄是在功能激活或停用时触发的事件。换句话说,我们将研究功能接收器。
我们在上一章创建的 Visual Studio 项目有一个功能,当它被激活时,它会预配我们的“联系方式”列表、我们的网站页面以及到网站页面的链接。
但是,当功能被停用时,SharePoint 只会移除链接,“网站页面”和“联系方式”列表仍然保留。
如果需要,我们可以在功能停用时编写代码来移除列表和页面。本章我们将学习如何在功能停用时移除内容和元素。
要处理功能的事件,我们需要一个功能接收器。
步骤 1 − 要获取功能接收器,请在解决方案资源管理器中右键单击功能,然后选择添加事件接收器。
using System; using System.Runtime.InteropServices; using System.Security.Permissions; using Microsoft.SharePoint; namespace FeaturesAndElements.Features.Sample { /// <summary> /// This class handles events raised during feature activation, deactivation, installation, uninstallation, and upgrade. /// </summary> /// <remarks> /// The GUID attached to this class may be used during packaging and should not be modified. /// </remarks> [Guid("e873932c-d514-46f9-9d17-320bd3fbcb86")] public class SampleEventReceiver : SPFeatureReceiver { // Uncomment the method below to handle the event raised after a feature has been activated. //public override void FeatureActivated(SPFeatureReceiverProperties properties)//{ // } // Uncomment the method below to handle the event raised before a feature is deactivated. //public override void FeatureDeactivating(SPFeatureReceiverProperties properties)// { // } // Uncomment the method below to handle the event raised after a feature has been installed. //public override void FeatureInstalled(SPFeatureReceiverProperties properties)// { // } // Uncomment the method below to handle the event raised before a feature is uninstalled. //public override void FeatureUninstalling(SPFeatureReceiverProperties properties)// { // } // Uncomment the method below to handle the event raised when a feature is upgrading. //public override void FeatureUpgrading(SPFeatureReceiverProperties properties, string upgradeActionName, System.Collections.Generic.IDictionary<string, string> parameters) // { // } } }
你会看到我们得到的是一个从SPFeatureReceiver继承的类。
在 SharePoint 中,有不同类用于处理不同类型的事件。例如,列表上的事件、列表项上的事件、网站上的事件。你可以创建一个从特定事件接收器派生的类,然后可以重写该类中的方法来处理事件。
功能的事件在以下情况下使用:
- 激活
- 停用
- 安装
- 卸载
- 升级
接下来,你需要将该类附加为特定项目的事件处理程序。例如,如果有一个处理列表事件的事件处理程序,你需要将该类附加到列表。
因此,我们将处理两个功能:
功能激活时
功能停用时
步骤 2 − 我们将实现FeatureActivated 和 FeatureDeactivated 方法,如下所示:
using System; using System.Runtime.InteropServices; using System.Security.Permissions; using Microsoft.SharePoint; namespace FeaturesAndElements.Features.Sample { /// <summary> /// This class handles events raised during feature activation, deactivation, installation, uninstallation, and upgrade. /// </summary> /// <remarks> /// The GUID attached to this class may be used during packaging and should not be modified. /// </remarks> [Guid("e873932c-d514-46f9-9d17-320bd3fbcb86")] public class SampleEventReceiver : SPFeatureReceiver { private const string listName = "Announcements"; public override void FeatureActivated(SPFeatureReceiverProperties properties) { var web = properties.Feature.Parent as SPWeb; if (web == null) return; var list = web.Lists.TryGetList(listName); if (list != null) return; var listId = web.Lists.Add(listName, string.Empty, SPListTemplateType.Announcements); list = web.Lists[listId]; list.OnQuickLaunch = true; list.Update(); } public override void FeatureDeactivating(SPFeatureReceiverProperties properties) { var web = properties.Feature.Parent as SPWeb; if (web == null) return; var list = web.Lists.TryGetList(listName); if (list == null) return; if (list.ItemCount == 0) { list.Delete(); } } } }
注意:
激活功能时,我们将创建一个“公告”列表。
停用功能时,我们将检查“公告”列表是否为空,如果为空,我们将删除它。
步骤 3 − 现在右键单击项目并选择部署。你将看到以下部署冲突警告。
![Deployment Conflicts](/sharepoint/images/deployment_conflicts.jpg)
Visual Studio 告诉我们我们正在尝试创建一个名为“联系方式”的列表,但是站点中已经存在一个名为“联系方式”的列表。它询问我们是否要覆盖现有列表,在这种情况下,请单击解决。
步骤 4 − 返回 SharePoint,然后刷新你的网站,然后转到网站操作 → 网站设置 → 管理网站功能 → 示例功能。
![Sample Features](/sharepoint/images/sample_features.jpg)
你会看到左侧窗格中没有“公告”列表。
步骤 5 − 让我们激活“示例功能”,你将看到“公告”列表,但现在它是空的。
![Announcements List](/sharepoint/images/announcements_list.jpg)
注意:如果你停用“示例功能”,你会注意到“公告”列表消失了。
步骤 6 − 让我们重新激活该功能。转到“公告”,然后添加一个新的公告。我们将其命名为“测试”,然后单击“保存”。
![New Announcement](/sharepoint/images/new_announcement.jpg)
你将在“公告”下看到“测试”文件。
![Test File Under Announcements](/sharepoint/images/test_file_under_announcements.jpg)
现在,当你停用“公告”时,你会看到“公告”列表仍然存在,因为它不是空的。
![Deactivate Announcements](/sharepoint/images/deactivate_announcements.jpg)
SharePoint - Azure 平台
本章将介绍 Microsoft Azure 平台。Microsoft Azure 是微软的云平台技术,它本身就是一项非常强大的技术。它不仅仅是一个部署代码的地方,而是一整套服务,你作为开发人员可以在 SharePoint 解决方案开发中使用。
云计算
要了解 Microsoft Azure,你首先必须了解一些关于云的信息。云计算是关于利用 Web 作为一组资源来开发和部署你的解决方案。传统上,云计算被定义为服务类别。它们是:
- 基础设施即服务 (IAAS)
- 平台即服务 (PAAS)
- 软件即服务 (SAAS)
在开发的上下文中,每一类都不同。例如,你可能会认为:
IAAS 为你远程管理的托管虚拟机 (VM)。
PAAS 为你将代码、数据、大型二进制对象 (BLOB)、Web 应用和其他应用程序工件部署到基于云的环境(例如 Windows Server 2012 R2 和 IIS)。
SAAS 为你可以注册使用的基于订阅的服务,例如 Office 365。
尽管这三类服务主导了云的特征方式,但云有四个普遍接受的支柱:
与其他云用户共享资源。
通过管理门户管理你自己的服务和应用程序。
应用程序和服务可以随着你的业务需求而增长和收缩。
仅支付你使用的云资源费用。
Azure 平台概述
Microsoft Azure 平台由许多不同的服务组成。你可以在应用程序设计、部署和管理中利用它们,例如数据、服务和集成,这是任何使用 Microsoft Azure 中服务的应用程序的客户端层。
数据层
在数据层中,有许多不同类型的数据存储机制或功能直接映射到数据存储,其中包含非关系型和关系型数据。
非关系型功能
非关系型存储功能使你能够:
存储资产,例如虚拟机映像或图像或视频到 Blob 中
创建非关系型表
管理服务总线上的消息队列,并在你的分布式应用程序中管理数据缓存
关系型功能
关系型数据功能如下:
核心 Azure SQL 数据库,它是本地 SQL Server 的云版本
报表服务 (SQL Reporting)
能够从数据事务流式传输近乎实时的的数据流 (Stream Insight)
服务层
服务层包含许多你可以用来构建解决方案的默认服务,从媒体服务到核心云服务,例如:
创建网站
工作角色类
利用 Microsoft Azure 上的 Hadoop 处理大数据请求
对于许多这些服务,你可以在你的应用程序中使用内置功能和一组 API。例如,如果你想构建一个多媒体学习解决方案,你可以利用媒体服务:
上传 WMV
将它们转码为 MP4
将它们保存到 BLOB 存储
创建一个公共 URL 用于访问,然后从 Microsoft Azure 流式传输它们
集成层
集成层包含一些基本服务,例如:
地理复制的内容交付网络 (CDN)
流量管理器
虚拟专用网络,它使你能够将虚拟机连接到你的本地系统
工作流和业务流程及集成服务
所有这些功能使你能够集成系统或保护它们。
Azure 应用
Microsoft Azure 不仅仅是关于服务。Azure 是一个不断发展的云平台,它有一套工具和 SDK,使你能够快速开始开发云应用程序。
要开始使用 Microsoft Azure,你需要以下内容:
- 最新版本的 Visual Studio
- Microsoft Azure 订阅
- Microsoft Azure 订阅
步骤 1 − 让我们来看一个简单的示例,在这个示例中,我们将通过创建一个新的 ASP.NET MVC 应用程序将我们的 Web 应用程序部署到 Microsoft Azure。
![ASP.NET MVC application](/sharepoint/images/asp_net_mvc_application.jpg)
步骤 2 − 点击“确定”,你将看到以下对话框。选择 MVC 模板,选中在云中托管复选框,然后点击“确定”。
![Host in Cloud](/sharepoint/images/host_in_cloud.jpg)
步骤 3 − 当出现“配置 Microsoft Azure Web 应用设置”对话框时,请确保你已登录 Azure。如果未登录,请先登录。
你可以看到默认名称,但可以更改Web 应用名称。
![Web App name](/sharepoint/images/web_app_name.jpg)
步骤 4 − 输入如下所示的所需信息。从“数据库服务器”下拉列表中选择创建新服务器。
![Create New Server](/sharepoint/images/create_new_server.jpg)
步骤 5 − 你将看到附加字段。输入数据库服务器、用户名和密码,然后单击“确定”。
![Database Server](/sharepoint/images/database_server.jpg)
项目创建后,运行你的应用程序,你将看到它正在 localhost 上运行。
![Running on Localhost](/sharepoint/images/running_on_localhost.jpg)
步骤 6 − 要将这些应用程序部署到 Azure,请在解决方案资源管理器中右键单击项目,然后选择“发布”。
![Select Publish](/sharepoint/images/select_publish.jpg)
步骤 7 − 你将看到以下对话框。单击 Microsoft Azure Web 应用。
![Microsoft Azure Web Apps](/sharepoint/images/microsoft_azure_web_apps.jpg)
步骤 8 − 从现有 Web 应用中选择你的应用程序名称,然后单击“确定”。
![Existing Web Apps](/sharepoint/images/existing_web_apps.jpg)
步骤 9 − 单击验证连接按钮以检查 Azure 上的连接。
![Validate Connection](/sharepoint/images/validate_connection.jpg)
步骤 10 − 单击下一步继续。
![Click Next](/sharepoint/images/click_next.jpg)
现在你将看到连接字符串已默认为你生成。
![Connection String](/sharepoint/images/connection_string.jpg)
步骤 11 − 单击下一步继续。
![Publish Web](/sharepoint/images/publish_web.jpg)
步骤 12 − 要检查我们将发布到 Azure 的所有文件和 dll,请单击启动预览。
![Start Preview](/sharepoint/images/start_preview.jpg)
步骤 13 − 单击发布以发布你的应用程序。
![Publish](/sharepoint/images/publish.jpg)
应用程序成功发布到 Azure 后,你将在输出窗口中看到消息。
![Message](/sharepoint/images/message.jpg)
你还会看到你的应用程序现在正在从云端运行。
![Application Running from Cloud](/sharepoint/images/application_running_from_cloud.jpg)
现在让我们再次转到 Azure 门户,你也会在这里看到该应用程序。
![Azure Portal](/sharepoint/images/azure_portal.jpg)
SharePoint 应用和 Microsoft Azure
SharePoint 和 Microsoft Azure 本身就是两个庞大的平台。SharePoint 是微软领先的服务器生产力平台或企业的协作平台和 Web。
Microsoft Azure 是微软在云中的操作系统。单独来看,它们各自都有自己的优势、市场竞争力和开发者群体。
它们共同提供了许多强大的优势。它们是:
它们有助于扩展你部署代码和数据的方式和地点。
它们增加了利用 Microsoft Azure 的机会,同时降低了本地应用程序的存储和故障转移成本。
它们为你提供了新的业务模式和产品,你可以将其带给你的客户,以增加你自己的解决方案产品。
在 SharePoint 2010 中,Azure 和 SharePoint 是两个不同的平台和技术,可以很容易地集成,但它们不是同一个系统的一部分。然而,在 SharePoint 2013 中,这种情况发生了变化。
SharePoint 2013 引入了不同类型的云应用程序。事实上,你可以构建两种类型的 Azure 集成应用程序。
第一种类型的应用程序是自动托管的,第二种是提供程序托管的(有时称为自托管的)。
两者之间的主要区别在于:
自动托管的应用程序与 SharePoint 开发和部署体验一起,原生支持一组 Azure 功能,例如 Web 站点和 SQL 数据库。
提供程序托管的应用程序旨在与比自动托管的应用程序更广泛的 Web 技术和标准集成,其中之一是 Microsoft Azure。
因此,在构建使用 Azure 的提供程序托管应用程序时,你可以利用整个 Microsoft Azure 堆栈。
SharePoint - 打包和部署
本章将介绍 SharePoint 解决方案的打包和部署。部署 SharePoint 解决方案的第一步是创建解决方案包。
解决方案包是一个扩展名为 WSP 的CAB 文件,其中包含 Visual Studio 项目中实现功能所需的所有文件。
实现功能所需的文件包括:
功能清单。
任何元素清单。
包含已编译托管代码的 dll。
关联文件,如网页、用户控件和网页配对文件。
解决方案包中包含的另一个文件是解决方案清单。解决方案清单是包中包含的文件目录。对于场解决方案,它还包含部署说明。
与功能清单一样,Visual Studio 会在您修改项目时自动创建和维护解决方案清单。您可以使用解决方案设计器查看解决方案清单。
除了创建和维护解决方案清单外,Visual Studio 还自动为我们的项目创建解决方案包。每次您部署工作进行调试时,它都会在后台执行此操作。
生成的解决方案包放置在与 dll 相同的文件夹中,即 bin debug 或 bin release 文件夹。要在 Windows 资源管理器中查看此文件的内容,只需将扩展名从 WSP 更改为 CAB,然后双击该文件即可。
让我们来看一个简单的示例,在这个示例中,我们将检查与我们在前一章中创建的 SharePoint 解决方案项目关联的解决方案包。让我们从我们之前创建的功能和元素项目开始。
![Features and Element](/sharepoint/images/features_and_element.jpg)
如您所知,在项目中,我们有一个名为 Sample 的功能。此功能引用三个元素清单:Contacts、SitePage 和 Action。
您还可以看到 Action 有元素清单,Contacts 有其元素清单,SitePage 有元素清单和一个网页,它将此网页配置到站点中。因此,我们应该预期解决方案包包含功能清单、三个元素清单、网页以及我们在构建项目时创建的程序集。
步骤 1 - 在解决方案资源管理器中右键单击您的项目,然后选择“在文件资源管理器中打开文件夹”。
![Folder in File Explorer](/sharepoint/images/folder_in_file_explorer.jpg)
步骤 2 - 转到 bin 并打开 Debug 文件夹。您将看到解决方案包。
![Debug Folder](/sharepoint/images/debug_folder.jpg)
步骤 3 - 制作一个副本,然后将副本文件的扩展名从 wsp 更改为 cab。
![wsp to cab](/sharepoint/images/wsp_to_cab.jpg)
步骤 4 - 现在双击 cab 文件以打开它,您将看到文件。您将看到功能清单、三个元素清单、aspx 页面、dll 和一个附加文件,即解决方案清单。
![cab file](/sharepoint/images/cab_file.jpg)
步骤 5 - 在解决方案资源管理器中,您将看到一个名为 Package 的文件夹,如果您展开它,您将看到一个名为Package.package的文件。双击该文件,您将看到解决方案设计器。
![Package.package](/sharepoint/images/package_package.jpg)
此设计器显示当前解决方案中只有一个功能,并且该功能引用三个元素清单:Contacts、SitePage 和 Action。
此设计器是 XML 文档的编辑器,就像功能设计器一样。
![Feature References](/sharepoint/images/feature_references.jpg)
此代理的解决方案清单很简单。它只是表明这里有一个需要部署的名为 FeaturesandElemenest.dll 的程序集,我们将将其部署到全局程序集缓存。
它还指示我们有一个具有此功能清单的功能。如果我们返回到功能并查看其清单,它会指示有三个元素清单和我们的 aspx 页面。
![GlobalAssemblyCache](/sharepoint/images/globalassemblycache.jpg)
场解决方案部署
现在我们知道了解决方案包是什么以及它们包含什么内容,我们需要学习如何部署它们。
要部署场解决方案,您可以将 Visual Studio 创建的解决方案包提供给您的 SharePoint 管理员。他们将使用 PowerShell 或中央管理或两者的组合工具来部署包。
让我们看看场解决方案部署。
步骤 1 - 转到 Visual Studio 项目中的“功能和元素”。
![Farm Sollution Development](/sharepoint/images/farm_solution_deployment.jpg)
此项目有一个具有三个元素的功能。部署场解决方案时,解决方案的内容将复制到 SharePoint 系统文件夹中,如下所示:
![SharePoint System Folders](/sharepoint/images/sharepoint_system_folders.jpg)
步骤 2 - 现在让我们转到列表设计器,然后将标题更改为“Contacts-Change 1”,然后单击“保存”按钮。
![Contacts to Change1](/sharepoint/images/contacts_to_change1.jpg)
步骤 3 - 现在转到项目属性,然后在左侧窗格中选择 SharePoint。在活动部署配置选项中,从下拉列表中选择“默认”选项。
![Active Deployment Configuration](/sharepoint/images/active_deployment_configuration.jpg)
步骤 4 - 在解决方案资源管理器中,右键单击项目并选择“部署”。部署完成后,刷新您的站点,您将看到更改。
![Choose Deploy](/sharepoint/images/choose_deploy.jpg)
SharePoint - 沙箱解决方案
本章将介绍沙盒解决方案的部署。沙盒解决方案的部署比场解决方案的部署简单得多。
这类似于将文档上传到文档库。完成开发后,您将获取解决方案包,而不是将其提供给您的 SharePoint 管理员,而是将其提供给最终用户(拥有站点集所有者权限的用户)。然后,他们将获取包并将其上传到站点集解决方案库。
与场解决方案一样,Visual Studio 中的工具会在开发过程中自动执行此部署过程。
让我们来看一个沙盒解决方案部署的简单示例。它比场解决方案部署简单得多。
步骤 1 - 在这里,我们需要创建一个新的站点集并将其命名为 Demo 1。
![Demo1](/sharepoint/images/demo1.jpg)
步骤 2 - 在 FeaturesAndElements 项目中将联系人列表名称改回 Contacts。
![Contacts in FeaturesAndElements](/sharepoint/images/contacts_in_featuresandelements.jpg)
步骤 3 - 通过右键单击项目并选择“收回”来收回解决方案。如果我们回到 SharePoint 系统文件夹,您会注意到我们的功能文件夹不存在了。
![Retract](/sharepoint/images/retract.jpg)
接下来,如果我们转到管理网站功能,我们应该看不到 Sample 功能。
![Go to Manage Site Features](/sharepoint/images/go_to_manage_site_features.jpg)
步骤 4 - 返回 Visual Studio 项目,单击解决方案资源管理器中的项目,然后转到属性窗口。将沙盒解决方案从 False 更改为 True。
![Sandbox Solution](/sharepoint/images/sandbox_solution.jpg)
将显示警告对话框。
![Changing Property](/sharepoint/images/changing_property.jpg)
这向我们表明,添加到 Visual Studio 项目的某些项目将无法与沙盒解决方案和某些 SharePoint API 一起使用。SharePoint Server 对象模型中的一些类型与沙盒解决方案不兼容。
单击“是”以进行更改。在这种情况下,构建沙盒解决方案与构建场解决方案相同,但部署过程完全不同。
对于沙盒解决方案,我们将文件部署到 SharePoint 内容数据库中,而不是部署到 SharePoint 系统文件夹中。
步骤 5 - 转到网站设置。在 Web 设计器库下,有一个解决方案库。
![Solutions Gallery](/sharepoint/images/solutions_gallery.jpg)
步骤 6 - 单击“解决方案”链接,您将看到以下页面,我们将在其中部署沙盒解决方案。
![Deploy our Sandbox Solutions](/sharepoint/images/deploy_our_sandbox_solutions.jpg)
您已完成开发。无需将解决方案包提供给 SharePoint 管理员,然后让他们使用 PowerShell 或中央管理来部署场解决方案,您可以将包提供给最终用户(拥有站点集所有者权限的用户),然后他们可以将解决方案上传到解决方案库。
步骤 7 - 返回 Visual Studio,右键单击并选择“发布到文件系统”。
![Publish to File System](/sharepoint/images/publish_to_file_system.jpg)
单击发布按钮将新的解决方案包发布到包文件夹。
您将在 Package 文件夹中看到该包。
![Package Folder](/sharepoint/images/package_folder.jpg)
步骤 8 - 现在转到 SharePoint 网站。单击功能区上的“上传解决方案”按钮选项。
![Upload Solution Button](/sharepoint/images/upload_solution_button.jpg)
步骤 9 - 浏览到您的 FeaturesAndElements 解决方案。单击“确定”。
![FeaturesAndElements Solution](/sharepoint/images/featuresandelements_solution.jpg)
您将看到以下对话框。
步骤 10 - 您只需单击“激活”按钮即可激活沙盒解决方案
![Active Sandbox Solution](/sharepoint/images/active_sandbox_solution.jpg)
步骤 11 - 转到“管理网站功能”。
![Manage Site Feature](/sharepoint/images/manage_site_feature.jpg)
您现在将看到您的 Sample 功能,当您单击“激活”时,您应该会得到与之前相同的行为。
![Activate](/sharepoint/images/activate.jpg)
SharePoint - 应用
本章将介绍 SharePoint 应用。应用模型是 SharePoint 扩展的新开发部署和托管模型。作为 SharePoint 2013 中的开发人员,我们可以选择使用解决方案模型(场解决方案或沙盒解决方案),也可以使用应用模型。
Microsoft 文档和指南建议您优先使用应用模型而不是解决方案模型,这可能是非常有效的指导。但是,您必须考虑到应用模型是对 SharePoint 2013 的重要补充,而解决方案模型自 SharePoint 2007 以来就一直存在。
因此,使用解决方案模型进行开发的知识库明显优于当前使用应用模型进行开发的知识库状态。
应用存在的时间还不够长,无法让人们分享他们使用它的实际经验。我认为学习应用模型及其优缺点非常重要。
应用特性
应用特性如下所示:
从开发人员的角度来看,第一个也是最重要的特性是应用中的所有代码都在 SharePoint 服务器外部执行。这意味着代码要么是在用户的浏览器中运行的 JavaScript,要么是在某个外部服务器上运行的代码。
由于所有代码都在 SharePoint 外部运行,因此与 SharePoint 的通信是通过 Web 服务进行的,这意味着您正在使用客户端对象模型或 REST API。
在 SharePoint 应用中,您无法使用服务器对象模型。
完成应用构建后,您将将其放入公共应用商店或本地应用目录中。这需要审核流程,并且您需要遵循某些规则才能使您的应用有资格进入公共应用商店。
另一种选择是将您的应用放入本地应用目录中,它只是 Web 应用程序中的站点集,已由中央管理配置为应用目录。
应用部署到商店或目录后,拥有站点集所有者权限的用户可以将其安装在 SharePoint 网站中。
应用类型
您可以构建不同类型的应用,如下所示:
SharePoint 托管应用
首先是 SharePoint 托管应用。顾名思义,这种应用托管在您的 SharePoint 场中。
重要功能包括:
它托管在安装它的站点的子站点中,此子站点在大多数情况下与其他站点一样。
它可以包含列表、库、页面、内容类型等。
构建 SharePoint 托管应用的基础知识与构建 SharePoint 解决方案的基础知识类似。
我们有一个功能。
我们可以向该功能添加元素,并使用 CAML 定义这些元素。
对于许多元素,我们在 Visual Studio 中都有设计器。
我们可以添加网站页面。
我们可以向这些网站页面添加服务器控件。
我们不能向这些网站页面添加代码隐藏,但我们可以添加 JavaScript 代码。
一旦您超越了基础知识,事情就开始变得越来越不像了。
云托管应用
其他两种类型的应用(提供商托管和自动托管)被归类为云托管应用。重要功能包括:
这些应用位于 SharePoint 外部的站点中。
提供商托管和自动托管之间的最大区别在于谁将创建和管理此外部站点:
在提供商托管应用中,那是您或您的组织。
在自动托管应用中,即微软。
构建云托管应用与构建任何其他网站相同。
如果您是 .NET 开发人员,您可能正在使用 MVC 或 Web 窗体。但是,您并不局限于这些技术。您可以使用任何您想要的 Web 技术来构建云托管应用。在构建完应用后,在提供商托管方案中,您将像处理任何其他网站一样将应用部署到您的站点。
在自动托管方案中,您使用 Visual Studio 创建应用包。它相当于一个解决方案包,然后您可以将其上传到 SharePoint Online 和站点。如有必要,将为您预配数据库以托管您的应用。
自动托管应用只能与 SharePoint Online 一起使用,不支持本地场。
这是我们在应用模型章节中已经介绍过的相同示例。
让我们来看一个 SharePoint 托管应用程序的简单示例,方法是打开 Visual Studio 并选择“文件”→“新建”→“项目”菜单选项。
步骤 1 - 打开 Visual Studio 并选择文件 → 新建 → 项目菜单。
![Project Menu](/sharepoint/images/project_menu.jpg)
步骤 2 - 在左侧窗格中选择模板 → Visual C# → Office/SharePoint,然后在中间窗格中选择SharePoint 应用。
在“名称”字段中输入名称,单击“确定”,您将看到以下对话框。
![App for SharePoint](/sharepoint/images/app_for_sharepoint.jpg)
在新 SharePoint 应用中,我们需要添加要调试的 SharePoint 网站 URL,然后选择 SharePoint 托管模型作为您希望托管 SharePoint 应用的方式。
步骤 3 - 转到 SharePoint 管理中心并复制 SharePoint URL。
![SharePoint URL](/sharepoint/images/sharepoint_url.jpg)
步骤 4 - 将 URL 粘贴到新 SharePoint 应用对话框中,如下所示。
![New App for SharePoint](/sharepoint/images/new_app_for_sharepoint.jpg)
步骤 5 - 单击下一步,它将打开连接到 SharePoint对话框,我们需要登录。
![Connect to SharePoint](/sharepoint/images/connect_to_sharepoint.jpg)
步骤 6 - 输入您的凭据并单击登录按钮。成功登录到 SharePoint 网站后,您将看到以下对话框:
![Sign in](/sharepoint/images/sign_in.jpg)
步骤 7 - 单击完成。创建项目后,单击解决方案资源管理器中的AppMenifest.xml文件。
![AppMenifest.xml](/sharepoint/images/appmenifest_xml.jpg)
步骤 8 - 单击权限选项卡。将打开一个“范围”下拉列表。
![Permissions Tab](/sharepoint/images/permissions_tab.jpg)
步骤 9 - 在“范围”下拉列表中,选择网站,这是您正在配置的权限范围。在“权限”下拉列表中,选择“读取”,这是您正在配置的权限类型。
![Select Web](/sharepoint/images/select_web.jpg)
步骤 10 - 打开 Default.aspx 文件并将其替换为以下代码。
<%-- The following 4 lines are ASP.NET directives needed when using SharePoint components --%> <%@ Page Inherits = "Microsoft.SharePoint.WebPartPages.WebPartPage, Microsoft.SharePoint, Version = 15.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" MasterPageFile = "~masterurl/default.master" Language = "C#" %> <%@ Register TagPrefix = "Utilities" Namespace = "Microsoft.SharePoint.Utilities" Assembly = "Microsoft.SharePoint, Version = 15.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" %> <%@ Register TagPrefix = "WebPartPages" Namespace = "Microsoft.SharePoint.WebPartPages" Assembly = "Microsoft.SharePoint, Version = 15.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" %> <%@ Register TagPrefix = "SharePoint" Namespace = "Microsoft.SharePoint.WebControls" Assembly = "Microsoft.SharePoint, Version = 15.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" %> <%-- The markup and script in the following Content element will be placed in the <head> of the page --%> <asp:Content ID = "Content1" ContentPlaceHolderID = "PlaceHolderAdditionalPageHead" runat = "server"> <script type = "text/javascript" src = "../Scripts/jquery- 1.6.2.min.js"></script> <link rel = "Stylesheet" type = "text/css" href = "../Content/App.css" /> <script type = "text/javascript" src = "../Scripts/App.js"></script> </asp:Content> <asp:Content ID = "Content2" ContentPlaceHolderID = "PlaceHolderMain" runat = "server"> <script type = "text/javascript"> function hello() { var currentTime = new Date(); $get("timeDiv").innerHTML = currentTime.toDateString(); } </script> <div id = "timeDiv"></div> <input type = "button" value = "Push me!" onclick = "hello();" /> </asp:Content>
步骤 11 - 转到解决方案资源管理器,右键单击项目并选择“发布”。单击打包应用按钮。这将构建您的 SharePoint 托管应用,并为将其部署到您的 SharePoint 网站做好准备。
![Package the App](/sharepoint/images/package_the_app.jpg)
您将看到以下文件夹,其中包含 *.app 文件。
![App File](/sharepoint/images/app_file.jpg)
步骤 12 - 导航到您的 SharePoint 在线网站。
![Navigate to SharePoint](/sharepoint/images/navigate_to_sharepoint.jpg)
步骤 13 - 在左侧窗格中单击SharePoint 应用。将打开一个新页面。
![Apps for SharePoint](/sharepoint/images/apps_for_sharepoint.jpg)
步骤 14 - 将您的文件拖到这里上传。
![Uploading Files](/sharepoint/images/uploading_files.jpg)
文件上传后,您将看到以下页面:
![Uploaded file Tab](/sharepoint/images/uploaded_file_tab.jpg)
步骤 15 - 在左侧窗格中单击选项 - 网站内容。单击添加应用图标,如下面的屏幕截图所示:
![Site Contents](/sharepoint/images/site_contents.jpg)
将打开一个新页面。
步骤 16 - 在左侧窗格中选择您的应用 → 来自您的组织,您将看到该应用可供安装。单击该应用。
![Select app from Organization](/sharepoint/images/select_app_from_organization.jpg)
步骤 17 - 单击该应用时,将打开一个对话框,如下面的屏幕截图所示。单击信任它。
![Dialogue Box](/sharepoint/images/dialogue_box.jpg)
步骤 18 - 您将看到该应用已安装。安装完成后,您可以单击该应用。
![App Installed](/sharepoint/images/app_installed.jpg)
您将看到以下页面,其中包含一个按钮:
![Page](/sharepoint/images/page.jpg)
单击按下我按钮时,它将显示当前日期。
![Push me Button](/sharepoint/images/push_me_button.jpg)
自动托管
让我们来看一个自动托管的简单示例,方法是创建一个新项目。
步骤 1 - 选择SharePoint 2013 应用并单击确定。
![App for SharePoint 2013](/sharepoint/images/app_for_sharepoint_2013.jpg)
步骤 2 - 选择自动托管。
![Select Autohosted](/sharepoint/images/select_autohosted.jpg)
步骤 3 - 选择 ASP.NET MVC Web 应用程序,然后单击“完成”。
![ASP.NET MVC Web Application](/sharepoint/images/select_asp_net_mvc_web_application.jpg)
创建项目后,发布您的应用。其余步骤与 SharePoint 托管选项中提供的步骤相同。