Скрыть столбцы повторителя на основе пользовательских привилегий - PullRequest
4 голосов
/ 09 февраля 2011

Может кто-нибудь объяснить мне, как скрыть столбец повторителя, основываясь на привилегиях пользователя.

Скажи, что у меня есть:

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

6 голосов
/ 09 февраля 2011

Вы можете отобразить элементы <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 голос
/ 09 февраля 2011

Вы можете сделать что-то вроде следующего:

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

Где IsUserLoggedOn - это некоторая функция, которая возвращает логическое значение, которое имеет значение true, если пользователь вошел в систему

0 голосов
/ 09 февраля 2011

Вы можете использовать элемент управления 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>
...