На главной странице моего сайта есть код навигации со ссылками, для которых я хочу ограничить видимость. Вот HTML до точки, где у меня возникают проблемы:
<%@ Master Language="C#" AutoEventWireup="True" CodeBehind="Site.master.cs" Inherits="MAMOnline.Site" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>MAMOnline - <%: Page.Title %></title>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="Stylesheets" runat="server">
<link rel="stylesheet" href="/css/reset.css" type="text/css" />
<link rel="stylesheet" href="/css/styles.css" type="text/css" />
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager runat="server">
<Scripts>
<%--Framework Scripts--%>
<asp:ScriptReference Name="jquery" />
<%--Site Scripts--%>
</Scripts>
</asp:ScriptManager>
<div id="container">
<header>
<div class="width">
<h1><a href="/">MAM<strong>Online</strong></a></h1>
<nav>
<ul class="sf-menu dropdown">
<asp:LoginView runat="server" ViewStateMode="Disabled">
<LoggedInTemplate>
<li class="selected"><a runat="server" href="~/Default.aspx"><i class="fa fa-home"></i> Home</a></li>
<li><a runat="server" href="~/MyAccount.aspx"><i class="fa fa-briefcase"></i> My Account</a></li>
<li><a runat="server" href="~/Admin/Default.aspx" id="adminLink" Visible="False"><i class="fa fa-briefcase"></i> Administration</a></li>
<li><a id="logoutLink" runat="server" href="~/AuthHandler.ashx?logout=true"><i class="fa fa-phone"></i>Log out</a></li>
</LoggedInTemplate>
</asp:LoginView>
</ul>
Я пробую элемент с идентификатором "adminLink". Однако он не отображается в файле конструктора, и ссылка на него в коде файла .cs не работает. Я делаю очевидную ошибку?
2 ответа
Если вы хотите использовать элемент управления ASP.NET в коде за файлом или конструктором, попробуйте изменить это
<a runat="server" href="~/Admin/Default.aspx" id="adminLink" Visible="False"><i class="fa fa-briefcase"></i> Administration</a>
Чтобы
<asp:HyperLink runat="server" .... id="adminLink" ..../>
Это мое решение: элементы управления перемещены за пределы шаблона, установите свойства runat="server" id="adminLink" в родительском элементе управления
<ul class="sf-menu dropdown">
<li class="selected"><a runat="server" href="~/Default.aspx"><i class="fa fa-home"></i>Home</a></li>
<li><a runat="server" href="~/MyAccount.aspx"><i class="fa fa-briefcase"></i>My Account</a></li>
<li runat="server" id="adminLink"><a href="~/Admin/Default.aspx"><i class="fa fa-briefcase"></i>Administration</a></li>
<asp:LoginView runat="server" ViewStateMode="Disabled">
<LoggedInTemplate>
<li><a id="logoutLink" runat="server" href="~/AuthHandler.ashx?logout=true"><i class="fa fa-phone"></i>Log out</a></li>
</LoggedInTemplate>
</asp:LoginView>
Затем в коде вы можете установить видимое свойство для «adminLink», например
adminLink.Visible = Context.User.IsInRole("4");
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.
LoginView.FindControl("adminLink")
для получения кода доступа к элементу управления.