我试图用我们的苔藓环境隐藏某些页面的网站操作菜单,特别是非发布页面。
我希望使用SPSecurityTrimmedControl来实现它,所以在我的主页上我有:
<Sharepoint:SPSecurityTrimmedControl runat="server" Permissions="ApproveItems">
<PublishingSiteAction:SiteActionMenu runat="server"/>
</SharePoint:SPSecurityTrimmedControl>
但似乎这只是基于角色而不是基于页面的。有人可以提出替代方案吗?
答案 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上找到相关信息。