有人可以向我解释如何根据用户权限隐藏转发器列。
说我有:
<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>
我如何仅向登录用户显示“秘密信息”列?
答案 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>