站点属性管理 (SharePoint 2013)





5.00/5 (4投票s)
用于管理 SharePoint 站点属性包的用户界面
图 1 - 管理站点属性页面
图 2 - 编辑站点属性对话框
图 3 - 添加站点属性对话框
引言
此应用程序页面集适用于 Microsoft SharePoint 2013,提供了一个管理界面来管理 SharePoint 站点中的自定义属性,也称为属性包 (property bags)。SharePoint 将网站的元数据存储在哈希表 SPWeb.AllProperties 中。这些属性可以通过 API SPWeb.GetProperty、SPWeb.AddProperty、SPWeb.SetProperty 和 SPWeb.RemoveProperty 访问。当构建自定义组件需要存储配置数据时,这些属性特别有用。
背景
在 SharePoint 中有许多地方可以存储配置数据。对于委托控件 (delegate controls),可以使用元素清单 (element manifest)。对于 Web 部件 (web parts),可以使用 .webpart 文件。对于全局配置,可以使用 web.config、自定义 SharePoint 列表,或 SPFarm
、SPWebApplication
、SPSite
、SPWeb
和 SPList
中的属性包。
有许多免费工具可以涵盖上述部分场景。我的工具仅限于管理 SPWeb
中的自定义属性。尽管如此,它应该能覆盖大部分用例。将属性存储在 SPFarm
或 SPWebApplication
中风险更大,需要更高的访问权限,而这些权限可能在生产环境中或在访问应用程序页面应逻辑存在的 SharePoint 2013 Central Administration 时不一定拥有。
描述
开发此工具的挑战在于使其界面与 SharePoint 其他应用程序页面无缝集成。我的意思是,不仅是外观和感觉,还包括整个 UI 如何对用户以及幕后工作。
- 有 3 个应用程序页面。它们是 MngSiteProperties.aspx (管理页面)、AddSiteProperty.aspx (添加页面) 和 EditSiteProperty.aspx (编辑页面)。所有 3 个页面都继承自
WebAdminPageBase
,并重写了RequireSiteAdministrator
以返回true
。 - UI 元素尽可能使用内置的 SharePoint 元素进行渲染。使用的元素包括用户控件 ToolBar.ascx、ToolBarButton.ascx、InputFormSection.ascx、InputFormControl.ascx、ButtonSection.ascx 以及自定义控件 SPGridView 和 InputFormTextBox。
- 所有 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.aspx 和 EditSiteProperty.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 - 初始版本。