这是我从不同的地方拼凑出来的。我尝试做的是根据用户角色和管理员端(visibiltyType)的选项显示或隐藏自定义页面类型。
到目前为止,它似乎是有效的,但我不确定我的条件语句语法是最好的。C#不是我的强项。
这是我的转变:
<script runat="server">
public bool visibility;
public string visiblityType;
protected override void OnDataBinding(EventArgs e)
{
visiblityType = Eval("Visibility").ToString();
if( CMS.Membership.MembershipContext.AuthenticatedUser.IsInRole("scona-cms_resources_branchdirectors", CMS.SiteProvider.SiteContext.CurrentSiteName) && visiblityType == "ncp" ){
alert.Visible = true;
}
if( CMS.Membership.MembershipContext.AuthenticatedUser.IsInRole("scona-cms_resources_salesreps", CMS.SiteProvider.SiteContext.CurrentSiteName) && visiblityType == "ncp" ){
alert.Visible = true;
}
if( CMS.Membership.MembershipContext.AuthenticatedUser.IsInRole("scona-kff-headoffice", CMS.SiteProvider.SiteContext.CurrentSiteName) && visiblityType == "ncp" ){
alert.Visible = true;
}
if( CMS.Membership.MembershipContext.AuthenticatedUser.IsInRole("scona-cms_resources_partnernetwork", CMS.SiteProvider.SiteContext.CurrentSiteName) && visiblityType == "cp" ){
alert.Visible = true;
}
if (visiblityType == "both"){
alert.Visible = true;
}
}
</script>
<asp:placeholder id="alert" runat="server" Visible="false">
<li><%# Eval("Visibility") %> | <%# Eval("AlertDate") %> - <%# Eval("AlertTitle") %> <%# IfEmpty(Eval("AlertCopy"),"", " <a href='" + GetDocumentUrl() + "'>Read More</a>") %></li>
</asp:placeholder>
发布于 2016-05-09 22:48:10
您可以配置Page Type权限并避免转换中的所有检查。
发布于 2016-05-09 22:22:04
这对我来说似乎是可行的:
<script runat="server">
protected override void OnLoad(EventArgs e)
{
alert.Visible = true;
}
</script>
<asp:placeholder id="alert" runat="server" visible="false">
Placeholder
</asp:placeholder>但是,对于您的情况,我建议切换到XML/转换,因为它的更高效/更快,而且编写这样的条件也更容易。在您的情况下,它将与编写以下代码一样好:
{% if(CurrentUser.IsInRole("Editors")){ %}
User is in role editors
{% } else { %}
user is not in editors role
{% }%}当然,它可以更复杂,您甚至可以为此编写一个自定义的宏方法,但您已经明白了:)
https://stackoverflow.com/questions/37117587
复制相似问题