隐藏/删除主页面导航项目来自另一页面

时间:2015-12-11 23:43:59

标签: c# html asp.net

我有这个母版页:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="Site.SiteMaster" %>

<!DOCTYPE html>

<html lang="en">
<head runat="server">
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title><%: Page.Title %></title>

<asp:PlaceHolder runat="server">
    <%: Scripts.Render("~/bundles/modernizr") %>
</asp:PlaceHolder>
<webopt:bundlereference runat="server" path="~/Styles/css" />
<link href="~/Images/favicon.ico" rel="shortcut icon" type="image/x-icon" />
</head>
<body>
<form runat="server">
    <asp:ScriptManager runat="server">
        <Scripts>
            <asp:ScriptReference Name="MsAjaxBundle" />
            <asp:ScriptReference Name="jquery" />
            <asp:ScriptReference Name="bootstrap" />
            <asp:ScriptReference Name="respond" />
            <asp:ScriptReference Name="WebForms.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebForms.js" />
            <asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebUIValidation.js" />
            <asp:ScriptReference Name="MenuStandards.js" Assembly="System.Web" Path="~/Scripts/WebForms/MenuStandards.js" />
            <asp:ScriptReference Name="GridView.js" Assembly="System.Web" Path="~/Scripts/WebForms/GridView.js" />
            <asp:ScriptReference Name="DetailsView.js" Assembly="System.Web" Path="~/Scripts/WebForms/DetailsView.js" />
            <asp:ScriptReference Name="TreeView.js" Assembly="System.Web" Path="~/Scripts/WebForms/TreeView.js" />
            <asp:ScriptReference Name="WebParts.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebParts.js" />
            <asp:ScriptReference Name="Focus.js" Assembly="System.Web" Path="~/Scripts/WebForms/Focus.js" />
            <asp:ScriptReference Name="WebFormsBundle" />
        </Scripts>
    </asp:ScriptManager>

    <div class="navbar navbar-inverse navbar-fixed-top">
        <div class="container">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <a class="navbar-brand" runat="server" href="~/">Application name</a>
            </div>
            <div class="navbar-collapse collapse">
                <ul class="nav navbar-nav">
                    <li><a runat="server" href="~/">Home</a></li>
                    <li><a runat="server" href="~/About">About</a></li>
                    <li><a runat="server" href="~/Contact">Contact</a></li>
                </ul>
                <asp:LoginView id="lvLoginRegister" runat="server" ViewStateMode="Disabled">
                    <AnonymousTemplate>
                        <ul id="rightNavBar" class="nav navbar-nav navbar-right">
                            <li id="liRegister"><a runat="server" href="~/Account/Register">Register</a></li>
                            <li id="liLogin"><a runat="server" href="~/Account/Login">Log in</a></li>
                        </ul>
                    </AnonymousTemplate>
                    <LoggedInTemplate>
                        <ul class="nav navbar-nav navbar-right">
                            <li><a runat="server" href="~/Account/Manage" title="Manage your account">Hello, <%: Context.User.Identity.GetUserName()  %> !</a></li>
                            <li>
                                <asp:LoginStatus runat="server" LogoutAction="Redirect" LogoutText="Log off" LogoutPageUrl="~/" OnLoggingOut="Unnamed_LoggingOut" />
                            </li>
                        </ul>
                    </LoggedInTemplate>
                </asp:LoginView>
            </div>
        </div>
    </div>
    <div class="container body-content">
        <asp:ContentPlaceHolder ID="MainContent" runat="server">
        </asp:ContentPlaceHolder>
        <hr />
        <footer>
        </footer>
      </div>
    </form>
  </body>
</html>

我能够访问我的<LoginView>控件并且能够隐藏它但是如何隐藏ul和li项?

如果我隐藏了LoginView Control,它会隐藏整个内容,但我只想隐藏这些项目。

LoginView navLoginRegister = (LoginView)this.Master.FindControl("lvLoginRegister");    
navLoginRegister.Visible = false -- Works
HtmlGenericControl liLogin = (HtmlGenericControl)navLoginRegister.FindControl("liLogin");
liLogin.Visible = false; --Doesn't work

谢谢!

1 个答案:

答案 0 :(得分:2)

您的li控件在服务器端无法被发现,因为它不是服务器控件。只需将runat="server"添加到liLogin控件,就像这样

<li id="liLogin" runat="server" ClientIDMode="Static">
    <a runat="server" href="~/Account/Login">Log in</a>
</li>

如果您将来需要在客户端使用其ID ClientIDMode="Static",您可能还希望将li添加到新服务器liLogin控件中。这样您就可以处理id名称liLogin而不是意外的id名称。有关ClientIdMode的更多信息,您可以找到here