Question

... Je souhaite afficher le bouton "Supprimer" lorsque l'utilisateur est un administrateur et le bouton "Ajouter un élément" lorsque l'utilisateur est un contributeur:

<!-- More code above -->
<asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description" />
            <asp:TemplateField ShowHeader="False">
                <ItemTemplate>
                    <asp:LinkButton CSSClass="TableRightLink" ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Delete"
                        Visible=<%# User.IsInRole(@"DOMAIN\CMDB_ADMIN") %>
                        Text="Delete" 
                        OnClientClick="return confirm('Are you certain you want to delete this item?');"></asp:LinkButton>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
        <SelectedRowStyle VerticalAlign="Top" />
        <HeaderStyle ForeColor="White" CssClass="TableHeader" BackColor="SteelBlue" />
    </asp:GridView>
    <asp:table width="100%" runat="server" CSSclass="PromptTable" Visible=<%# User.IsInRole(@"DOMAIN\CMDB_CONTRIBUTE") %> >
    <asp:tablerow><asp:tablecell HorizontalAlign=Center>
      <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="AddConfigItem.aspx" ForeColor="LightCyan">Add Item</asp:HyperLink>
    </asp:tablecell></asp:tablerow></asp:table>

L'attribut 'visible' du bouton de suppression fonctionne correctement. Mais le lien hypertexte & "Ajouter élément" ne le fait pas. Ça se voit toujours. View-source me dit que% # User.IsInRole (@ & Quot; DOMAIN \ CMDB_CONTRIBUTE & Quot;))% & Gt; n'évalue rien. Une idée de pourquoi c'est?

Était-ce utile?

La solution

Essayez de le définir dans le code derrière, au lieu de marquer, dans Page_Load. En supposant que l’identifiant est promptTable (cela n’a pas été donné dans votre exemple), ajoutez simplement:

promptTable.Visible = User.IsInRole(@"DOMAIN\CMDB_CONTRIBUTE");

Cela doit probablement être fait, qu'il s'agisse d'une publication ou non.

FWIW, @Keltex a raison de dire que le contrôle n'est pas lié à la donnée, donc <%# %> ne fonctionnera pas. Malheureusement, la syntaxe <%= %> ne le sera pas non plus, car elle retourne toujours une chaîne et vous avez besoin d'une valeur booléenne. Je ne pouvais trouver aucune autre syntaxe qui fonctionnerait dans ce cas. Vous pouvez probablement le faire en désactivant l'affichage en utilisant javascript, mais je suppose que vous ne voulez pas que le tableau soit restitué à la page s'il ne fait pas partie du groupe approprié (au lieu d'être simplement masqué ou supprimé du DOM une fois sur le disque). client). Le faire dans le code derrière, je pense que c'est la bonne façon de s'y prendre.

Autres conseils

Essayez:

Visible='<%= User.IsInRole(@"DOMAIN\CMDB_CONTRIBUTE") %>'

La table asp: ne semble pas être databound.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top