[英]HTML control not appearing in Code Behind with ASP.net Forms
在我的網站主頁上,我具有導航代碼,該導航代碼包含一些我想限制其可見性的鏈接。 這是我遇到問題的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>
我正在嘗試使用ID為“ adminLink”的元素。 但是,它不會出現在設計器文件中,並且無法在文件后的.cs代碼中引用它。 我犯了一個明顯的錯誤嗎?
如果要在文件或設計器后面的代碼中使用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" ..../>
這是我的解決方案:將控件重新放置在模板之外,在父控件<li>上設置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");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.