简体   繁体   English

如何隐藏asp.net中仪表板页面加载中母版页中的div?

[英]How to hide div present in master page on dashboard page load in asp.net?

I have a master page in which i have a div like 我有一个母版页,其中我有一个div喜欢

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="NGO_MS.SiteMaster" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head id="Head1" runat="server">
    <title></title>
    <script type="text/javascript" 
   src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <asp:ContentPlaceHolder ID="HeadContent" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
   <div class="container">
      <div>
        <div class="navbar navbar-default" role="navigation">
        <div class="navbar-collapse collapse " id="menu">
          <ul class="nav navbar-nav navbar-right alert-success">
            <li class="active"><a href="Default.aspx">Home</a></li>
          </ul>
        </div>
      </div>
      </div>
      <asp:ContentPlaceHolder ID="MainContent" runat="server"/> 
    </div>
    <div class="container" style="background-color: white">
         <div>
        <div style="float: left; color: green"> 
        </div>
        <div style="float: right; color: green">
        </div>
     </div> 
    </div>
</body>
</html>

In dashboard.aspx i want to hide div with id menu which is present in master page.. some thing like this .. 在dashboard.aspx中我想隐藏div与主菜单中存在的id菜单..这样的事情..

        <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="dashboard.aspx.cs" MasterPageFile="~/Site.master" Inherits="NGO_MS.dashboard" %>
<%@ Register TagPrefix="UC_LeftMenu" TagName="LeftMenu" Src="UserControls/UC_LeftMenu.ascx" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
   <script type="text/javascript">
       $(document).ready(function () {
           $('#menu').hide();
       });
</script>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<form runat="server" ID="Form1">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
       <div class="col-md-10">
           <UC_LeftMenu:LeftMenu ID="LeftMenu" runat="server" />
            <div class="col-md-9">
               <%--dashboard content will go here --%>
            </div>
        </div>
    </ContentTemplate>
</asp:UpdatePanel>
</form>   
</asp:Content>

How can I fix this its not working. 我怎么能解决这个问题呢? Thankyou :) I am using update panel in dashboard but this update panel is not wrapping div with id menu. 谢谢:)我在仪表板中使用更新面板,但此更新面板不包含带有id菜单的div。 How i can resolve this. 我怎么解决这个问题。

You need ScriptManager if you want to call pageLoad . 如果要调用pageLoad,则需要ScriptManager

<asp:ScriptManager runat="server" ID="ScriptManager1" />
<script type="text/javascript" 
    src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
    function pageLoad() {
        $('#menu').hide();
    }
</script>

Since you are using jQuery, you can use the following - 由于您使用的是jQuery,因此可以使用以下命令 -

<script type="text/javascript" 
   src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

<script type="text/javascript">
    $(function() {
        $('#menu').hide();
    });
</script>

Another Approach using Server Side Code 使用服务器端代码的另一种方法

You can create Menu as Server Control , and access it from dashboard codebehind. 您可以将菜单创建为服务器控件 ,并从仪表板代码隐藏中访问它。

Site.Master 的Site.Master

<div class="container">
    <div>
        <div class="navbar navbar-default" role="navigation">
            <asp:Panel runat="server" ID="MenuPanel" 
                CssClass="navbar-collapse collapse">
                <ul class="nav navbar-nav navbar-right alert-success">
                    <li class="active"><a href="Default.aspx">Home</a></li>
                </ul>
            </asp:Panel>
        </div>
    </div>
    <asp:ContentPlaceHolder ID="MainContent" runat="server" />
</div>

Site.Master.cs Site.Master.cs

public partial class Site : System.Web.UI.MasterPage
{
    public bool MenuPanelVisible
    {
        set { MenuPanel.Visible = value; }
    }
}

dashboard.aspx.cs dashboard.aspx.cs

public partial class dashboard : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        var master = Master as Site;
        if (master != null)
        {
            master.MenuPanelVisible = false;
        }
    }
}

check your HTML. 检查你的HTML。 if i am not mistaken, the ID will not be generated to HTML 1:1. 如果我没有弄错,则不会生成HTML 1:1的ID。

also currently your JS will not be executed... on the other hand you can define server-sided code too: 目前您的JS也不会被执行...另一方面,您也可以定义服务器端代码:

<script language="C#" runat="server" type="text/c#">
     public void Page_Load(object sender, EventArgs e){
         //hide the menu here
     }
</script>

alternatively you could even do the following: 或者你甚至可以做以下事情:

<div id="menu" onload="this.visibility=hidden;"></div>

You need to put your pageLoad functionality in the jQuery document ready handler so it executes after the DOM has loaded. 您需要将pageLoad功能放在jQuery文档就绪处理程序中,以便在DOM加载后执行。

It should look something like this: 它应该看起来像这样:

<script type="text/javascript">
    $(document).ready(function() {
        $('#menu').hide();
    });
</script>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM