Asp.net 如何在.aspx页面中隐藏内容占位符?
我的母版页有3个内容占位符:Asp.net 如何在.aspx页面中隐藏内容占位符?,asp.net,asp.net-mvc,master-pages,Asp.net,Asp.net Mvc,Master Pages,我的母版页有3个内容占位符: 1. left side bar 2. middle content area 3. right side bar 所以它看起来像: <div id="left"></div> <div id="content"></div> <div id="right"></div> 在继承母版页的特定视图页(.aspx)上,我现在要显示#3(右侧栏) 因此,我根本不希望渲染图像。 如何实现这一
1. left side bar
2. middle content area
3. right side bar
所以它看起来像:
<div id="left"></div>
<div id="content"></div>
<div id="right"></div>
在继承母版页的特定视图页(.aspx)上,我现在要显示#3(右侧栏)
因此,我根本不希望渲染图像。
如何实现这一点?根据“渲染”的含义,有几种方法可以实现这一点 一种方法是对每个页面的body标记应用一个id,然后使用CSS隐藏您不希望使用类似于
#myPage #right{display:none;}
或者,如果“render”是指HTML响应中的输出,那么可以用局部视图替换div。在运行时,您可以决定将哪些部分视图包括在页面中,或者作为所有控制器继承的基本控制器的一部分,或者作为每个控制器的一部分
使用基本控制器是我复制常规代码的方法之一,与您在webforms中的母版页代码隐藏中所做的方法类似。最好使用内容占位符进行格式化,并将实际内容放在从.master page继承的.aspx文件中 通过这种方式,您可以在没有内容的master中分配3列div,但将它们向左浮动,或者以css的格式设置它们,并使用.aspx中的内容引用将内容放置到所需的列中
如果你想创建3列布局,我建议使用jQuyys.UI布局插件,而不是尝试伪列等。< P>另一个要考虑的事情是嵌套母版页。我在当前项目中做了一个类似的设计布局,我们有一个“基本”母版页,它完成了所有脚本,包括页眉和页脚,并且只有一个ContentPlaceHolder,它表示页眉和页脚之间的所有内容。然后,我们有一个嵌套的母版页,它使用基本母版页,但添加了一个右侧的“aside”列。对于希望右侧列可见的页面,我们使用嵌套母版页。对于不希望呈现的页面,我们使用基本母版页 这样的策略肯定会阻止你的专栏#3被渲染(而不是被渲染并且只是空的,这可能无法实现你想要的布局) 它看起来像这样: 基本母版页:
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="MasterBase.Master.cs" Inherits="MasterBase" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
...
<asp:ContentPlaceHolder ID="head" runat="server" />
</head>
<body>
<form id="form1" runat="server">
<!-- HEADER -->
...
<!-- CONTENT -->
<asp:ContentPlaceHolder ID="bodyContent" runat="server" />
<!-- FOOTER -->
...
</form>
</body>
</html>
...
...
...
嵌套母版页
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
<asp:ContentPlaceHolder ID="head" runat="server" />
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="bodyContent" runat="server">
<!-- CENTER COLUMN -->
<div id="centerCol">
<asp:ContentPlaceHolder ID="bodyContent" runat="server" />
</div>
<!-- RIGHT COLUMN -->
<div id="rightCol">
<asp:ContentPlaceHolder ID="rightColumn" runat="server" />
</div>
</asp:Content>
根据中的文档,您可以使用
ContentPlaceHolder
类的Visible
属性
为此,您需要转到网页的代码隐藏文件。例如:
Child.aspx
或者,正如Jamie Dixon所指出的,您还可以使用css规则
display:none代码>是您在母版页中显示的代码吗?如果是,是否存在任何
<asp:ContentPlaceHolder id="HideMe" runat="server">
....
</asp:ContentPlaceHolder>
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
HideMe.Visible = false
End Sub