8小时学会SharePoint – 网站集栏、内容类型和MVC集成 第4部分






4.50/5 (2投票s)
在本实验中,我们将学习如何创建内容类型、网站集栏,以及如何将MVC与SharePoint集成。
目录
引言
理论:-网站集栏 & 内容类型
实验12:- 创建网站集栏
- 步骤1:- 获取Visual Studio和Office模板
- 步骤2:- 创建一个简单的“Hello World”应用/附加组件
- 理论:- 理解提供程序托管和SharePoint托管的概念
- 步骤3:- 选择ASP.NET项目类型
- 步骤4:- 指定安全模型
- 步骤5:- 在Action和View中添加代码
- 理论:- “SharePointContextFilter”特性的必要性是什么?
- 步骤7:- 授予应用信任
引言
在上一个实验(即第3部分)中,我们学习了如何自定义SharePoint的主控页。在本实验中,我们将学习如何创建内容类型、网站集栏,以及如何将MVC与SharePoint集成。
如果您是SharePoint新手,我们强烈建议您从下面的YouTube视频和CodeProject实验开始。
实验1(第1小时):- 在这个实验中,我们将学习如何获取SharePoint访问权限,创建网站、网站集和添加页面。要阅读第一篇文章,请点击这里。
实验2(第2小时):- 在这个实验中,我们将了解如何添加列表、文档库,以及如何为SharePoint网站分配权限和权利。要阅读第二篇文章,请点击这里。
实验3(第3小时):- 在这个实验中,我们将学习如何自定义SharePoint主控页。要阅读第三篇文章,请点击这里。
理论:-网站集栏 & 内容类型
网站集栏和内容类型的全部目的是在列表和文档库之间重用字段。
例如,考虑一个名为“销售部门”的文档库,其中有一个名为“文档标题”的列,如下图所示。现在,如果您想在其他文档库中重用此列,将非常困难。
当您使用文档库的“+”图标添加列时(阅读此文),您添加的是私有列。
网站集栏和内容类型是全局列定义,它们在一个中央位置创建,然后可以重用并应用于不同的应用,如文档、列表、Wiki等。通过这种方式,我们无需为每个应用重复定义列。
因此,我们首先了解如何创建网站集栏,然后继续学习内容类型。
所以,我们将创建一个名为“文档标题”的简单列,并将其应用到多个文档库。
实验12:- 创建网站集栏
要创建网站集栏,请转到网站设置,然后单击网站集栏,如下图所示。网站集栏位于“Web Designer Gallery”(Web设计器库)类别下。
单击网站集栏后,您将看到一个屏幕,如下图所示。在此屏幕上,单击“Create”(创建)超链接。
单击“Create”(创建)超链接后,会要求您指定该列属于哪个类别。我们暂时选择“Custom Columns”(自定义列),并将其命名为“Employee Number”(员工编号)。
现在,此网站集栏已在中央创建,我们可以将其应用到多个文档和列表。
现在,假设我们要将上述创建的网站集栏应用到销售部门文档库。因此,转到文档库并单击库设置,如下图所示。
然后选择您要应用到文档库的列。例如,在此案例中,我们将选择“EmployeeNumber”,如下图所示。
应用后,您应该会在文档库中看到“Employee Number”字段已添加。
网站集内容类型理论
现在,网站集栏是定义单个字段列定义的绝佳方式。但是,如果您有一组字段,如员工信息(员工姓名、员工编号和员工描述),该怎么办?创建4个单独的列,然后逐一应用它们会很麻烦。
这时,网站集内容类型就派上用场了。网站集内容类型在逻辑上将网站集栏组合在一起。因此,我们只需应用网站集内容类型,而不是应用每个字段。
实验13:- 创建网站集内容类型
要创建网站集内容类型,请单击网站设置,然后单击网站集内容类型,如下图所示。
然后单击“Create”(创建)菜单。
为内容类型命名,并确保将父内容类型选择为“Document Set”(文档集)。
注意:- 如果要将此内容类型应用到文档库,则需要选择“Document Set”(文档集);如果要将其应用到列表类型,则需要选择“List”(列表)。
创建内容类型后,我们需要将网站集栏添加到内容类型中。因此,选择列,单击“Add”(添加)并保存。
现在我们已经创建了内容类型,是时候在文档库上启用内容类型了。单击文档库,然后单击库设置。
然后单击“Advanced settings”(高级设置)。
单击“Yes”(是)以允许管理内容类型。
一旦允许管理内容类型,再次转到文档库并选择“Add from existing content type”(从现有内容类型添加)。
选择“Employee”内容类型,您将看到该内容类型的所有字段都已选中。
应用后,您应该会看到该内容类型的所有字段都已应用到文档库。
实验14:- MVC与SharePoint集成
到实验13为止,我们一直学习SharePoint的基础知识,如网站、网站集、列表、文档库、内容、网站集栏等。但现在是时候开始使用MVC和C#进行SharePoint定制了。
步骤1:- 获取Visual Studio和Office模板
要在SharePoint中托管MVC应用程序,您需要创建一个SharePoint应用程序。我们已经在实验8中讨论过SharePoint应用程序。
在SharePoint 2016中,应用程序被称为附加组件。所以,不用担心它叫什么。目前,您可以认为SharePoint应用程序或附加组件只是我们想在SharePoint网站中运行的一小部分功能。
因此,要创建一个应用程序/附加组件,第一步是从www.visualstudio.com下载Visual Studio Community Edition。
现在,在VS 2015 Community Edition中,您找不到创建SharePoint附加组件或应用程序所需的模板。
要获取这些模板,您需要为VS 2015安装Office开发工具:http://aka.ms/officedevtoolsforvs2015。
如果您使用的是VS 2015 Enterprise Edition,则无需安装Office工具,因为模板已包含在其中。
如果您使用的是Visual Studio 2013 Ultimate Edition,则无需下载Office开发工具,模板已包含在其中。
步骤2:- 创建一个简单的“Hello World”应用/附加组件
因此,让我们创建一个简单的MVC页面,显示“Hello to SharePoint from MVC”,并将其托管在SharePoint中。让我们单击“New Project”(新建项目),然后单击“Office/SharePoint”菜单,如下图所示,然后单击“App for SharePoint 2013”(SharePoint 2013应用)模板,如下图所示。
请注意,在2016年,应用程序已更改为“Add-in”(附加组件)。但步骤应该大致相同。如果您发现有任何差异,请发送邮件至questpond@questpond.com,我们将指导您。
单击“OK”后,会出现一个框,我们需要在此框中输入要托管此应用程序的SharePoint网站。现在,在同一UI中,您还将找到三个选项:Provider hosted(提供程序托管)、Auto(自动)和Sharepoint hosted(SharePoint托管)。让我们了解它们之间的区别。
在提供程序托管模型中,我们的应用程序托管在不同的服务器上,而SharePoint运行在另一台不同的服务器上。而在SharePoint托管中,我们的应用程序运行在与SharePoint运行在同一台服务器上。
注意:- 在SharePoint托管环境中,您只能运行HTML、JavaScript和CSS;您可以使用C#和MVC。对于本实验,我们将使用提供程序托管模型。因此,单击“Provider hosted”(提供程序托管)并按“Next”(下一步)。
ASP.NET是Microsoft的一个Web框架,有两种编码风格:MVC和WebForm,您可以使用它们来创建项目。在本实验中,我们将使用MVC,因为它是人们目前最常使用的技术。如果您是ASP.NET MVC新手,我建议您从这个1小时的MVC培训视频开始,这将帮助您尽快学习MVC。
因此,选择ASP.NET MVC并单击“Next”(下一步)。
现在,请记住Office 365 SharePoint通过Office 365的用户进行保护,请阅读上一篇文章中的用户、用户组和权限。因此,Visual Studio也必须自行授权才能托管应用程序或附加组件。
对于Visual Studio,它提供了两种选择:我们可以使用证书或使用Windows Azure访问控制。
我们稍后将讨论两者的区别。目前,只需选择“Access control”(访问控制)。访问控制意味着我们将立即提供用户名和密码。
因此,单击“Finish”(完成)后,您将看到一个凭据输入窗口,用于输入用户名和密码。输入Office 365用户名和密码。完成后,您应该会看到上面创建的MVC项目。
您可以看到它仍然是我们熟悉的MVC结构,包含Models、Controllers、Views、ActionResult等。
现在,默认的MVC项目已经包含了一些视图、操作和控制器。所以,让我们从头开始。让我们删除由“Index”操作调用的“Index.cshtml”视图。让我们右键单击“Index”操作并添加一个视图“Index.cshtml”。
在这个视图中,我们将只放一条简单的消息:“Hello to SharePoint from MVC”。
理论:- “SharePointContextFilter”特性的必要性是什么?
如果您注意到当前的“Index”操作代码,您会看到“SharePointContextFilter”特性装饰在“Index”操作上。让我们右键单击它并选择“Go to Definition”(转到定义)来看看它到底是什么?
如果您看到,它只不过是一个简单的MVC操作过滤器。如果您是MVC操作过滤器的新手,您可以从这里了解它。MVC操作过滤器是在操作执行之前和之后执行的预处理和后处理逻辑。
“SharePointContextFilter”是SharePoint提供的现成操作过滤器。
此过滤器有助于重定向到提供程序托管服务器,并带来SharePoint的许多信息,特别是它带来了SharePoint的上下文,以便我们的MVC和C#代码可以访问SharePoint对象。没有这个过滤器,很难获得SharePoint上下文访问权限。
现在,让我们将此应用程序发布到SharePoint。让我们删除“Index”操作中的所有代码,只保留调用“Index”视图的最少返回代码。
让我们构建项目,然后单击“Deploy”(部署)将此项目发布到SharePoint服务器。当您部署一个应用程序到SharePoint时,它会通过一个唯一的GUID号来标识该应用程序。您可以在输出窗口中看到客户端GUID。
部署成功后,让我们从Visual Studio中按Ctrl + F5,然后尝试运行项目。现在,当您尝试运行项目(应用程序/附加组件)时,SharePoint要求您授予应用程序信任。换句话说,SharePoint在问:您能否确认此应用程序不包含任何可能损害我们SharePoint网站的恶意代码?
您应该会看到一个如下所示的UI,请选择“Trust it”(信任它),然后让应用程序/附加组件执行。
一旦授予信任,它应该会显示我们的MVC视图,如下所示。
在已发布此应用程序的网站中,您应该能在“Recent links”(最近链接)部分看到“App / Addin”(应用程序/附加组件)链接。
如果您编辑最近链接,您可以看到它通过使用唯一标识符调用MVC应用程序。
现在请记住,这是提供程序托管。因此,如果提供程序服务器因某种原因宕机,应用程序将无法运行,您会收到一个“site not found”(未找到网站)的错误。
第5部分将介绍什么?
在下一节中,我们将研究如何使用SharePoint提供程序托管模型在ASP.NET MVC中访问列表数据。