【发布时间】:2015-03-19 17:08:43
【问题描述】:
在我使用 Scafolding 的 ASP.NET WebForms 应用程序中,我有很多页面需要根据用户的角色来限制某些链接。
例如,在我的<LoggedTemplate> 以及其他<li> 的Site.Master 中,我也有一个用于管理页面的<li>。默认情况下,这是不可见的,但如果用户以管理员身份登录,那么我希望它可见。这是我做不到的。这是它的代码:
<LoggedInTemplate>
<ul class="nav navbar-nav">
<li><a runat="server" id="adminLink" visible="false" href="~/Admin/Admin_Page">Admin</a></li>
<li><a runat="server" href="~/Inquiries/Default.aspx">Inquiry</a></li>
在我的 Codebehind 中,在 Page_Load 中,我无法仅访问 adminLink。
同样,在Model 的Default 页面之一中,该列表具有查看、插入和删除的链接。如果用户是管理员,那么我只想显示插入和删除链接。这是它的代码:
<td>
<asp:HyperLink runat="server" NavigateUrl='<%# FriendlyUrl.Href("~/Channels/Details", Item.ChannelId) %>' Text="View" /> |
<asp:HyperLink runat="server" ID="editLink" NavigateUrl='<%# FriendlyUrl.Href("~/Channels/Edit", Item.ChannelId) %>' Text="Edit" /> |
<asp:HyperLink runat="server" NavigateUrl='<%# FriendlyUrl.Href("~/Channels/Delete", Item.ChannelId) %>' Text="Delete" />
</td>
</tr>
</ItemTemplate>
我尝试添加
<% if (CommonUtilities.IsUserAdmin) { %>
hyperlinks for Insert & delete & finally
<% } %>
但这给出了错误。我将ID 添加到editLink,但再次无法在Page_Load 方法中访问它。
我敢肯定,他们一定有某种方法可以解决这个问题,但我还没有找到。 这个问题怎么处理??请帮助我,我有几个页面和链接可以根据管理员角色隐藏和显示。
非常感谢任何帮助。
谢谢
【问题讨论】:
标签: c# asp.net templates webforms code-behind