簡體   English   中英

HTML控件未出現在ASP.net表單的代碼隱藏中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM