Asp.net 如何在.aspx页面中隐藏内容占位符?

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(右侧栏) 因此,我根本不希望渲染图像。 如何实现这一

我的母版页有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