65.9K
CodeProject 正在变化。 阅读更多。
Home

站点属性管理 (SharePoint 2013)

starIconstarIconstarIconstarIconstarIcon

5.00/5 (4投票s)

2014年7月13日

CPOL

4分钟阅读

viewsIcon

17448

downloadIcon

182

用于管理 SharePoint 站点属性包的用户界面


图 1 - 管理站点属性页面

 


图 2 - 编辑站点属性对话框

 


图 3 - 添加站点属性对话框

引言

此应用程序页面集适用于 Microsoft SharePoint 2013,提供了一个管理界面来管理 SharePoint 站点中的自定义属性,也称为属性包 (property bags)。SharePoint 将网站的元数据存储在哈希表 SPWeb.AllProperties 中。这些属性可以通过 API SPWeb.GetPropertySPWeb.AddPropertySPWeb.SetPropertySPWeb.RemoveProperty 访问。当构建自定义组件需要存储配置数据时,这些属性特别有用。

背景

在 SharePoint 中有许多地方可以存储配置数据。对于委托控件 (delegate controls),可以使用元素清单 (element manifest)。对于 Web 部件 (web parts),可以使用 .webpart 文件。对于全局配置,可以使用 web.config、自定义 SharePoint 列表,或 SPFarmSPWebApplicationSPSiteSPWebSPList 中的属性包。

有许多免费工具可以涵盖上述部分场景。我的工具仅限于管理 SPWeb 中的自定义属性。尽管如此,它应该能覆盖大部分用例。将属性存储在 SPFarmSPWebApplication 中风险更大,需要更高的访问权限,而这些权限可能在生产环境中或在访问应用程序页面应逻辑存在的 SharePoint 2013 Central Administration 时不一定拥有。

描述

开发此工具的挑战在于使其界面与 SharePoint 其他应用程序页面无缝集成。我的意思是,不仅是外观和感觉,还包括整个 UI 如何对用户以及幕后工作。

  • 有 3 个应用程序页面。它们是 MngSiteProperties.aspx (管理页面)、AddSiteProperty.aspx (添加页面) 和 EditSiteProperty.aspx (编辑页面)。所有 3 个页面都继承自 WebAdminPageBase,并重写了 RequireSiteAdministrator 以返回 true
  • UI 元素尽可能使用内置的 SharePoint 元素进行渲染。使用的元素包括用户控件 ToolBar.ascxToolBarButton.ascxInputFormSection.ascxInputFormControl.ascxButtonSection.ascx 以及自定义控件 SPGridViewInputFormTextBox
  • 所有 UI 字符串都存储在资源文件中。应用程序页面中使用的 UI 字符串存储在应用程序全局资源文件 QuestechSystems.SharePoint.SiteProperties.Global.resx 中。在 Visual Studio 2013 中,该文件的 Deployment Type 设置为 AppGlobalResource
  • MngSiteProperties.aspx 中,站点属性列表渲染在 SPGridView 中,并包装在一个 UpdatePanel 中,我将在下一节详细解释。ItemTemplate 用于渲染指向编辑页面的超链接,并将属性名作为查询字符串传递。必须小心进行 URL 编码属性名,因此无法使用 HyperLinkField
  • 使用新的 SharePoint 模态对话框机制来启动添加和编辑操作,特别是函数 SP.UI.ModalDialog.showModalDialog。编写了一个回调函数,在添加或编辑操作成功完成后手动刷新 UpdatePanel。或者,您也可以使用 SP.UI.ModalDialog.RefreshPage,但这会刷新整个页面,并且会执行表单提交!
  • 为了在逻辑完成后回调到启动页面,我在 AddSiteProperty.aspxEditSiteProperty.aspx 的代码隐藏中的操作事件中添加了以下内容:
    page.Response.Clear();
    page.Response.Write(String.Format(@
    	"<script language=""javascript"" type=""text/javascript"">
    	window.frameElement.commonModalDialogClose(1, ""{0}"");
    	</script>", returnValue));
    page.Response.End();

    这会向浏览器渲染 SP.UI.ModalDialog.commonModalDialogClose,使其关闭当前对话框并将 returnValue 传递给启动器的回调函数。

  • 由于站点属性由 SharePoint 存储在哈希表中,属性值可能是一个对象而不是简单的字符串。管理页面将使用 ToString 列出属性值,但在编辑页面中,如果检测到属性值不是字符串,则会禁用 OK 按钮以阻止编辑。
  • 必须格外小心,不要编辑任何内置的站点属性,除非您知道自己在做什么。
  • 通过站点功能 SiteProperties 中的 CustomAction,应用程序页面会显示在 Site Settings 中。

提供的 Visual Studio 2013 解决方案包含构建和部署此工具所需的所有支持文件,但不包括强签名密钥文件。它充分利用了 SharePoint 的内置集成。不再需要第三方工具或自定义的预构建和后构建脚本来生成 SharePoint 解决方案文件。

安装

打开 SharePoint 2013 Management Shell,使用 Add-SPSolution 添加解决方案文件 QuestechSystems.SharePoint.SiteProperties.wsp,如下所示:

Add-SPSolution "C:\_deployment\QuestechSystems.SharePoint.SiteProperties.wsp"

转到 SharePoint 2013 Central Administration > System Settings > Manage farm solutions。将已安装的解决方案部署到选定的 Web 应用程序。在已部署解决方案的网站集(site collection)中,转到顶级站点或任何子站点以激活 Site Feature Questech Systems Site Properties。现在,Site Settings 中应该会有一个新的部分 Custom Settings (by Questech Systems)

历史

  • V1.0 - 2014.07.12 - 初始版本。
© . All rights reserved.