Еще одна вещь, которую нужно учитывать, это вложенные главные страницы. У меня похожий дизайн-макет, который я делаю в текущем проекте, и у нас есть «базовая» главная страница, которая включает в себя весь наш скрипт, верхний и нижний колонтитулы, и имеет только один 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>