3

...ユーザーが管理者の場合は「削除」ボタンを表示し、ユーザーが寄稿者の場合は「アイテムの追加」ボタンを表示したい:

<!-- 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>

削除ボタンの「可視」属性は正常に機能します。しかし、「アイテムの追加」ハイパーリンクはそうではありません。常に表示されます。View-source は、 %# User.IsInRole(@"DOMAIN\CMDB_CONTRIBUTE") %> が何にも評価されていないことを教えてくれます。これはなぜですか?

4

2 に答える 2

2

Page_Load のマークアップではなく、コード ビハインドで設定してみてください。IDがpromptTableであると仮定すると(例では指定されていません)、次を追加するだけです:

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

おそらく、ポストバックかどうかに関係なく、これを行う必要があります。

FWIW、@Keltexは、コントロールがデータバインドされていないことについて正しいので、機能し<%# %>ません。残念ながら、<%= %>構文は常に文字列を返し、そこにブール値が必要なため、構文もそうではありません。この場合に機能する他の構文は見つかりませんでした。おそらくJavaScriptを使用して表示をオフにすることでこれを行うことができますが、正しいグループにない場合は、テーブルがページにレンダリングされないようにする必要があると思います(一度DOMから非表示または削除されるのではなく)クライアント)。コードビハインドでそれを行うのが正しい方法だと思います。

于 2008-10-28T23:33:29.300 に答える
1

試す:

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

asp:table はデータバインドされていないようです。

于 2008-10-28T21:58:22.083 に答える