根据页面隐藏青苔中的站点操作菜单

时间:2009-09-28 14:39:43

标签: sharepoint menu conditional

我试图用我们的苔藓环境隐藏某些页面的网站操作菜单,特别是非发布页面。

我希望使用SPSecurityTrimmedControl来实现它,所以在我的主页上我有:

<Sharepoint:SPSecurityTrimmedControl runat="server" Permissions="ApproveItems">
<PublishingSiteAction:SiteActionMenu runat="server"/>
</SharePoint:SPSecurityTrimmedControl>

但似乎这只是基于角色而不是基于页面的。有人可以提出替代方案吗?

2 个答案:

答案 0 :(得分:1)

一种很好的方法是构建自己的包装器控件,根据您指定的某些条件隐藏其子控件。完全像SPSecurityTrimmedControl!

Waldeks blog entry。他正在为匿名用户隐藏“操作”菜单,因此您只需要放入自己的标准。

答案 1 :(得分:0)

我不确定这是不是这样做的最佳方式......但我不得不做类似的事情(隐藏/显示内容)。我创建了一个UserControl,然后将其包含在母版页中。

<强> 1。将代码写在用户控件后面

namespace YourCompany.Namespace
{
    public class HideSiteActionsClass : System.Web.UI.UserControl
    {
        protected override void  OnLoad(EventArgs e)
        {
            // do work to hide site actions depending on page
        }
    }
}

<强> 2。创建usercontrol ascx文件

C:\ Program Files \ Common Files \ microsoft shared \ Web Server Extensions \ 12 \ YourUserControl.ascx

的内容
<%@ Control Language="C#" Inherits="YourCompany.Namespace.HideSiteActionsClass,YourDLLThatHasTheClass, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b4145551be317a94" compilationMode="Always" %>

第3。将您的usercontrol添加到母版页

把它放在顶部:

<%@ Register TagPrefix="yourTagPrefix" TagName="YourTagName" src="~/_controltemplates/YourUserControl.ascx" %>

把它放在页面上的某个位置:

<yourTagPrefix:YourTagName id="AUserControlID" runat="server" EnableViewState="false"></yourTagPrefix:YourTagName>

您可以在Google或this page上找到相关信息。