MSDN Visual系列:创建Feature扩展SharePoint列表项或文档的操作菜单项
原文:http://msdn2.microsoft.com/en-us/library/bb418731.aspx
在SharePoint中我们可以通过创建一个包含CustomAction元素定义的Feature来为列表项或文档添加一个自定义操作菜单项(Entry Control Block Item)。我们可以添加自定义命令到默认的SharePoint用户界面中。这些菜单命令允许用户在列表项或文档上执行特定操作。比如,我们可以在列表项或文档的菜单中增加一项,用来将用户重定向到我们的自定义的应用程序页面。通过这种方式,我们可以创建出于SharePoint列表项或文档的操作菜单紧密整合在一起的商业解决方案。
首先,创建一个自定义的Feature。我们可以将Feature定义在任何一个范围上,但通常定义在网站集或网站范围上。下面的例子定义了一个网站集范围(即Scope="Site")上的Feature,并引用了另一个CAML文件--elements.xml。
Id="AA929AFF-4602-4d7f-A501-B80AC9A4BB52"
Title="A Sample Feature: Item Auditing"
Description="A sample Feature with an entry control block menu item"
Scope="Site"
xmlns="http://schemas.microsoft.com/sharepoint/">
<ElementManifests>
<ElementManifest Location="elements.xml" />
</ElementManifests>
</Feature>
我们使用CustomAction元素来定义SharePoint界面中各种类型的菜单项和链接。下面的CustomAction元素为文档库中的文档条目添加了一个自定义的菜单项。这是通过指定RegistrationType属性为List,RegistrationId属性为101来实现的。这是SharePoint中默认的文档库的类型Id。
Id="ItemAuditing.ECBItemMenu"
RegistrationType="List"
RegistrationId="101"
ImageUrl="/_layouts/images/GORTL.GIF"
Location="EditControlBlock"
Sequence="300"
Title="View Audit History" >
<UrlAction
Url="~site/_layouts/ItemAudit.aspx
?ItemId={ItemId}&ListId={ListId}"/>
</CustomAction>
在我们创建了CustomAction元素后,还必须在其内部添加一个UrlAction元素,其中包括一个Url属性。当要把用户重定向到一个应用程序页面(如ItemAudit.aspx)时,我们还要考虑我们是将应用程序页面运行在当前网站上下文环境中还是当前网站集环境中。下面的例子中,在URL前面添加了动态标记~site,在运行时,~site会被替换为当前网站的URL。
当我们通过定制的列表项操作菜单将用户重定向到一个自定义应用程序页面后,我们还需要将查询字符串传递到应用程序页面,以便可以通过编程获取到SPList和SPListItem对象。SharePoint支持另外两种动态标记:{ListId}和{ItemId}。SharePoint会用列表或文档库的GUID和列表项的ID号替换它们。
这种方式允许后台自定义应用程序页面(如ItemAudit.aspx)在页面初始化时得到ListId和ItemId值,进而可以针对列表项或文档进行编程,实现用户期望的自动化任务。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!