2016-05-09 10 views
0

私は様々な場所から一緒にこれを石畳にしました。私がしようとしているのは、ユーザーロールに基づいたカスタムページタイプと、管理者側からのオプション(visibiltyType)を表示するか非表示にするかです。Kentico ascx変換の構文

これまでのところ動作しているようですが、私の条件文の構文が最良かどうかはわかりません。 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>

+0

OnDataBindingではなくOnLoadメソッドをオーバーライドできますか? – Enn

+0

それはそのページを殺した。しかし、エラーの確かに。 –

答えて

0

これは私の側で動作するようです:

<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に切り替えることをお勧めします変換のため効率的/高速など、あなたはこのような条件を書くのがずっと簡単です。それはもちろん、より複雑になることができますし、さらに、この目的のためにカスタムマクロメソッドを書くことができますが、あなたのアイデアを得る:)

+0

Kenticoは特に速いとは言えないので、スピードと効率の点でRichardの証明が必要かもしれません。実際には、標準ascx変換はマクロエンジン(C#コードであるとはいえ)で処理する必要がないため、より高速であると見なすことができます。 もう1つのことは、この変換をチェックアウトすると、ascx変換をコンパイルすることができ、テキスト変換では変換できないことです。これはアップグレードに非常に便利です。 –

1

{% if(CurrentUser.IsInRole("Editors")){ %} 

User is in role editors 

{% } else { %} 

user is not in editors role 

{% }%} 

:あなたのケースでは、これを書いてと同じくらいいいだろうページ・タイプのパーミッションを構成し、変換ですべてのチェックを避けることができます。

+0

この使用されたアクセス許可の最初の反復。これを複数のグループに選択的に表示する必要が生じるまで、それはうまくいった。編集者は、グループに必要な数だけではなく、アイテムを一度作成することに気付きました。 私は条件文が乱雑ですが、ここでのADの役割はきれいではないことに同意します。 –

関連する問題