Как скрыть заполнитель содержимого на странице .aspx? - PullRequest
1 голос
/ 01 июля 2010

Моя главная страница содержит 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 (правая боковая панель).

Так что я не хочу, чтобы рендеринг вообще отображался.

Как я могу это сделать?

Ответы [ 4 ]

3 голосов
/ 02 июля 2010

Еще одна вещь, которую нужно учитывать, это вложенные главные страницы. У меня похожий дизайн-макет, который я делаю в текущем проекте, и у нас есть «базовая» главная страница, которая включает в себя весь наш скрипт, верхний и нижний колонтитулы, и имеет только один ContentPlaceHolder, который представляет все между верхним и нижним колонтитулами , Затем у нас есть вложенная главная страница, которая использует базовую главную страницу, но добавляет правильный столбец «в сторону». Для страниц, где мы хотим видеть правый столбец, мы используем вложенную главную страницу. Для страниц, которые нам не нужны, мы используем базовую главную страницу.

Стратегия, подобная этой, определенно предотвратит отображение вашего столбца № 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>
0 голосов
/ 23 октября 2014

Согласно документации System.Web.UI.WebControls , вы можете использовать свойство Visible класса ContentPlaceHolder.

Для этого вам необходимоперейдите в файл CodeBehind для веб-страницы.Например:

Child.aspx

<asp:ContentPlaceHolder id="HideMe" runat="server">
    ....
</asp:ContentPlaceHolder>

Child.aspx.vb

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    HideMe.Visible = false
End Sub

В качестве альтернативы, как указал Джейми Диксон, вы также можете скрытьdiv с правилом css display:none;

0 голосов
/ 01 июля 2010

Было бы лучше, если бы вы использовали заполнители содержимого для форматирования и поместили фактический контент в файлы .aspx, которые наследуются от страницы .master.

Таким образом, вы назначаете в вас 3 div столбцамастер без контента, но с плавающей их слева или, если вы хотите отформатировать их с помощью CSS и использовать ссылку на контент в вашем .aspx, чтобы поместить контент в нужный столбец.

PS.если вы хотите создать 3-х колоночную разметку, я бы предложил использовать плагин jquerys .ui-layout вместо пробных столбцов и т. д.

0 голосов
/ 01 июля 2010

Есть несколько способов добиться этого в зависимости от того, что вы подразумеваете под «рендерингом».

Один из способов - применить идентификатор к тегу тела каждой страницы, а затем использовать CSS, чтобы скрыть элементы div, которые вы не хотите «отображать», используя что-то вроде

#myPage #right{display:none;}

В качестве альтернативы, если под «рендерингом» вы подразумеваете вывод в ответе HTML, вы можете заменить свои div-ы частичным представлением. Затем во время выполнения вы можете решить, какие частичные представления включить на страницу, либо как часть базового контроллера, который наследуют все контроллеры, либо как часть каждого контроллера по отдельности.

Использование базового контроллера - это один из способов, которым я копирую общий код таким же образом, как вы могли бы это сделать в коде главных страниц в веб-формах.

...