Hola y gracias por la respueta tan rápida.
En efecto, a una ContentPage se le puede indicar en qué MasterPage debe ser visualizada. El problema está en que a una MasterPage no se cómo decirle qué ContentPage debe cargar por defecto.
Con lo que me has escrito, que es como yo lo tengo, sólo consigo que la página de Contenidos invocada desde un enlace se ves correctamente en su MasterPage, pero el resto de
huecos de la MasterPage permanecen vacíos.
Te pongo un ejemplo de como sería mi MasterPage:
Código:
<%@ Master AutoEventWireup="true" CodeFile="Public.master.cs" Inherits="Layout" Language="C#" %>
<!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 id="Head1" runat="server">
</head>
<body>
<asp:contentplaceholder id="CPHheader" runat="server">
</asp:contentplaceholder>
<asp:contentplaceholder id="CPHmenu" runat="server">
</asp:contentplaceholder>
<asp:contentplaceholder id="CPHcontents" runat="server">
</asp:contentplaceholder>
<asp:contentplaceholder id="CPHfooter" runat="server">
</asp:contentplaceholder>
</body>
</html>
Y un ejemplo de cómo sería mis ContentPage:
header.aspx
Código:
<%@ Page AutoEventWireup="true" CodeFile="header.aspx.cs" Inherits="header" Language="C#" MasterPageFile="~/Public.master" Title="My Header" %>
<asp:Content ID="Content1" ContentPlaceHolderID="CPHheader" Runat="Server">
Aquí va la cabecera
</asp:Content>
menuPublic.aspx
Código:
<%@ Page AutoEventWireup="true" CodeFile="menuPublic.aspx.cs" Inherits="menuPublic" Language="C#" MasterPageFile="~/Public.master" Title="My menu" %>
<asp:Content ID="Content1" ContentPlaceHolderID="CPHmenu" Runat="Server">
Aquí va un menú
</asp:Content>
home.aspx
Código:
<%@ Page AutoEventWireup="true" CodeFile="home.aspx.cs" Inherits="home" Language="C#" MasterPageFile="~/Public.master" Title="My Home" %>
<asp:Content ID="Content1" ContentPlaceHolderID="CPHcontents" Runat="Server">
Aquí va una de contenidos
</asp:Content>
footer.aspx
Código:
<%@ Page AutoEventWireup="true" CodeFile="footer.aspx.cs" Inherits="footer" Language="C#" MasterPageFile="~/Public.master" Title="My Header" %>
<asp:Content ID="Content1" ContentPlaceHolderID="CPHfooter" Runat="Server">
Aquí va el pie de página
</asp:Content>
Con esta estructura, si llamo a home.aspx, la veré bien en mi MasterPage, pero el resto de la MasterPage estará vacía.