根据用户权限隐藏Repeater列

时间:2011-02-09 19:24:01

标签: c# asp.net html-table repeater

有人可以向我解释如何根据用户权限隐藏转发器列。

说我有:

<asp:Repeater ID="repeater" runat="server>
  <HeaderTemplate>
    <table id="table_id">
      <tr>
        <th>Name</th>
        <th>Secret Info</th>
      <tr>
  </HeaderTemplate>
  <ItemTemplate>
      <tr>
        <td><asp:Label ID="Label1" runat="server" Text='<%# Eval("Name") %>' /></td>
        <td><asp:Label ID="Label1" runat="server" Text='<%# Eval("SecretInfo") %>' /></td>
      <tr>
  <ItemTemplate>
  <AlternatingItemTemplate>
      <tr>
        <td><asp:Label ID="Label1" runat="server" Text='<%# Eval("Name") %>' /></td>
        <td><asp:Label ID="Label1" runat="server" Text='<%# Eval("SecretInfo") %>' /></td>
      <tr>
  <AlternatingItemTemplate>
  <FooterTemplate>
    </table>
  </FooterTemplate>
</asp:Repeater>

我如何仅向登录用户显示“秘密信息”列?

3 个答案:

答案 0 :(得分:6)

您可以有条件地呈现<td>元素。这个简化的示例假设您有一个页面级属性,指示用户是否已登录(您将在标题模板中执行相同的操作):

<asp:Repeater ID="repeater" runat="server>
    <ItemTemplate>
        <tr>
            <td><asp:Label ID="Label1" runat="server" Text='<%# Eval("Name") %>'  /></td>
            <% if (this.UserIsLoggedOn) { %>
            <td><asp:Label ID="Label2" runat="server" Text='<%# Eval("SecretInfo") %>' /></td>
            <% } %>
        <tr>
    </ItemTemplate>
</asp:Repeater>

答案 1 :(得分:1)

您可以执行以下操作:

<td><asp:Label ID="Label1" runat="server" Text='<%# Eval("SecretInfo") %>' Visible='<%# IsUserLoggedOn() %>' /></td>

其中IsUserLoggedOn是一个返回布尔值的函数,如果用户已登录则为true

答案 2 :(得分:0)

您可以使用loginview控件,该控件可以显示基于角色的控件(包括匿名版和经过身份验证的控件)。您可以在此处找到指南:http://weblogs.asp.net/sukumarraju/archive/2010/07/28/role-based-authorization-using-loginview-control.aspx

类似于:

<asp:Repeater ID="repeater" runat="server>
  <HeaderTemplate>
    <table id="table_id">
      <tr>
        <th>Name</th>
        <asp:LoginView ID="lvwHeader" runat="server">
          <LoggedInTemplate>
            <th>Secret Info</th>
          </LoggedInTemplate>
        </asp:LoginView>
      <tr>
  </HeaderTemplate>
  <ItemTemplate>
      <tr>
        <td><asp:Label ID="Label1" runat="server" Text='<%# Eval("Name") %>' /></td>
        <asp:LoginView ID="lvwItem" runat="server">
          <LoggedInTemplate>
            <td><asp:Label ID="Label1" runat="server" Text='<%# Eval("SecretInfo") %>' /></td>
          </LoggedInTemplate>
        </asp:LoginView>
      <tr>
  <ItemTemplate>
  <AlternatingItemTemplate>
      <tr>
        <td><asp:Label ID="Label1" runat="server" Text='<%# Eval("Name") %>' /></td>
        <asp:LoginView ID="lvwItem" runat="server">
          <LoggedInTemplate>
            <td><asp:Label ID="Label1" runat="server" Text='<%# Eval("SecretInfo") %>' /></td>
          </LoggedInTemplate>
        </asp:LoginView>
      <tr>
  <AlternatingItemTemplate>
  <FooterTemplate>
    </table>
  </FooterTemplate>
</asp:Repeater>