CustomAction 连接到layouts下aspx页面上下文问题

  如果你自定义CustomAction时,如下

  <CustomAction Id ="CustomActions.ItemsSending.Announcements"
               Location ="Microsoft.SharePoint.StandardMenu"
               GroupId ="ActionsMenu"
               Title ="推送到首页"
               Sequence ="100"
               ImageUrl ="/_layouts/Images/ContentPush/ItemsSend.gif"
               Description ="把栏目条目推送到首页指定的栏目。"
               RegistrationType ="List"
                RegistrationId ="104">
    <UrlAction Url ="/_layouts/ContentPush/SendingPage.aspx">
  </CustomAction>

  那么你在你的aspx页面后台代码中的SPContext.Current.Web将是RootWeb的上下文,如果你需要真正的获得的话

我们得动点手脚,吧UrlAction修改为下面,逻辑也就是解析出当前web的相对url,然后拼出连接地址,例如你当前网站的地址为http://mossserver:2007/docs,那么你拼出的地址应该是/Docs/_layouts/ContentPush/SendingPage.aspx

<UrlAction Url ="javascript:function process(){var siteUrl='{SiteUrl}';var pageUrl = '/_layouts/ContentPush/SendingPage.aspx';var po = siteUrl.indexOf('/', 7);var relativeUrl = siteUrl.substring(po, siteUrl.length);var currentWebPageUrl = relativeUrl + pageUrl+'?SiteUrl={SiteUrl}&amp;ListID={ListId}';window.location.href=currentWebPageUrl;};process();"/>

 

  sharepoint自带的参数你可以上msdn查,我还是在这里给出

 

Windows SharePoint Services 支持以下用于启动相对 URL 的标记:

~site - 网站 (SPWeb) 相对链接。

~sitecollection - 网站集 (SPSite) 相对链接。

此外,您可以在 URL 中使用以下标记:

{ItemId} - 表示列表中的项目的整数 ID。

{ItemUrl} - 正在处理的项目的 URL。仅适用于库中的文档。[在 Beta 2 中不起作用]

{ListId} - 表示列表的 GUID。

{SiteUrl} - 网站的 URL (SPWeb)。

{RecurrenceId} - 重复索引。不支持将该标记用于列表项的上下文菜单中。

 

 

总结

1.Windows SharePoint Services 自带支持一些参数

2.url是可以使用脚本的

3.customaction还可以限定指定列表,内容类型,权限等  

你可能感兴趣的:(action)