By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,850 Members | 972 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,850 IT Pros & Developers. It's quick & easy.

master pages - header, content, footer

P: n/a
Thinking of creating a website, most of the pages will have a general
toolbar
menu, a content and a footer.
The content will be the only one who's gonna change but the rest
(header,footer)
will remain the same.
I am interested to know your opinions/suggestions in finding an easy
way of doing it.

In asp one could have something like this:
let's say we have a page x1_page.asp

<!--#include file="top.asp"-->
<!--#include file="x1_content.asp"-->
<!--#include file="footer.asp"-->

Put it more simple for x2_page.asp I will only change the content
inclusion:

<!--#include file="top.asp"-->
<!--#include file="x2_content.asp"-->
<!--#include file="footer.asp"-->

and I don't have to change anything on top and footer.
In ASP.net 2.0 is any way to accomplish the same, or to create a
wrapper with master pages? Do you have any other ideas? PlaceHolder
maybe one even though it's
not very stright and simple.

Thanks,
XK

Jul 24 '06 #1
Share this Question
Share on Google+
7 Replies


P: n/a
This is exactly what master pages are for and most of the getting started
examples you will find on the web are pretty much representitive of the type
of site you would like to put together.

Regards

John Timney (MVP)

<xk****@gmail.comwrote in message
news:11*********************@75g2000cwc.googlegrou ps.com...
Thinking of creating a website, most of the pages will have a general
toolbar
menu, a content and a footer.
The content will be the only one who's gonna change but the rest
(header,footer)
will remain the same.
I am interested to know your opinions/suggestions in finding an easy
way of doing it.

In asp one could have something like this:
let's say we have a page x1_page.asp

<!--#include file="top.asp"-->
<!--#include file="x1_content.asp"-->
<!--#include file="footer.asp"-->

Put it more simple for x2_page.asp I will only change the content
inclusion:

<!--#include file="top.asp"-->
<!--#include file="x2_content.asp"-->
<!--#include file="footer.asp"-->

and I don't have to change anything on top and footer.
In ASP.net 2.0 is any way to accomplish the same, or to create a
wrapper with master pages? Do you have any other ideas? PlaceHolder
maybe one even though it's
not very stright and simple.

Thanks,
XK

Jul 24 '06 #2

P: n/a
John, thanks for answering.
With Master Pages it's exactly what I thought at the beginning but
getting to the code part I got stuck when I had to write the content.

Let me explain, I am sure I am missing something, but I don't know
what. So if I have a master page like this:

<%@ Master Language="VB" CodeFile="MasterPage.master.vb"
Inherits="MasterPage" %>
<!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" <title>Untitled Page</title</head>
<body>
<form id="form1" runat="server">
<table width="100%">
<tr>
<td>
<asp:contentplaceholder id="ContentHeader" runat="server">
</asp:contentplaceholder>
</td>
</tr>
<tr>
<td>
<asp:contentplaceholder id="ContentPlaceHolder" runat="server">
</asp:contentplaceholder>
</td>
</tr>
<tr>
<td>
<asp:contentplaceholder id="ContentFooter" runat="server">
</asp:contentplaceholder>
</td>
</tr>
</table>
</form>
</body>
</html>

I end up having just ONE file for the content page:

<%@ Page Language="VB" MasterPageFile="~/template/MasterPage.master"
AutoEventWireup="false" CodeFile="Default2.aspx.vb"
Inherits="template_Default2" title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentHeader"
Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder"
Runat="Server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="ContentFooter"
Runat="Server">
</asp:Content>
My problem is: I want to have 3 different independent files:
header.aspx, content.aspx and footer.aspx so at the end (after creating
header and footer) I will only write content part.

Otherwise am I going to write Content1 and Content3 everytime when I
create a new page??

Thanks again,
XK

John Timney (MVP) wrote:
This is exactly what master pages are for and most of the getting started
examples you will find on the web are pretty much representitive of the type
of site you would like to put together.

Regards

John Timney (MVP)

<xk****@gmail.comwrote in message
news:11*********************@75g2000cwc.googlegrou ps.com...
Thinking of creating a website, most of the pages will have a general
toolbar
menu, a content and a footer.
The content will be the only one who's gonna change but the rest
(header,footer)
will remain the same.
I am interested to know your opinions/suggestions in finding an easy
way of doing it.

In asp one could have something like this:
let's say we have a page x1_page.asp

<!--#include file="top.asp"-->
<!--#include file="x1_content.asp"-->
<!--#include file="footer.asp"-->

Put it more simple for x2_page.asp I will only change the content
inclusion:

<!--#include file="top.asp"-->
<!--#include file="x2_content.asp"-->
<!--#include file="footer.asp"-->

and I don't have to change anything on top and footer.
In ASP.net 2.0 is any way to accomplish the same, or to create a
wrapper with master pages? Do you have any other ideas? PlaceHolder
maybe one even though it's
not very stright and simple.

Thanks,
XK
Jul 24 '06 #3

P: n/a
XK-

It is possible to have "nested" masterpages, although it is not
literally one masterpage file within another. I dont use this system
really as it seems to be pretty cumbersome.

Check out www.asp.net for tutorial videos (I found them really useful)
on masterpages in general.

Hope the videos help,

Chris

xk****@gmail.com wrote:
John, thanks for answering.
With Master Pages it's exactly what I thought at the beginning but
getting to the code part I got stuck when I had to write the content.

Let me explain, I am sure I am missing something, but I don't know
what. So if I have a master page like this:

<%@ Master Language="VB" CodeFile="MasterPage.master.vb"
Inherits="MasterPage" %>
<!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" <title>Untitled Page</title</head>
<body>
<form id="form1" runat="server">
<table width="100%">
<tr>
<td>
<asp:contentplaceholder id="ContentHeader" runat="server">
</asp:contentplaceholder>
</td>
</tr>
<tr>
<td>
<asp:contentplaceholder id="ContentPlaceHolder" runat="server">
</asp:contentplaceholder>
</td>
</tr>
<tr>
<td>
<asp:contentplaceholder id="ContentFooter" runat="server">
</asp:contentplaceholder>
</td>
</tr>
</table>
</form>
</body>
</html>

I end up having just ONE file for the content page:

<%@ Page Language="VB" MasterPageFile="~/template/MasterPage.master"
AutoEventWireup="false" CodeFile="Default2.aspx.vb"
Inherits="template_Default2" title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentHeader"
Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder"
Runat="Server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="ContentFooter"
Runat="Server">
</asp:Content>
My problem is: I want to have 3 different independent files:
header.aspx, content.aspx and footer.aspx so at the end (after creating
header and footer) I will only write content part.

Otherwise am I going to write Content1 and Content3 everytime when I
create a new page??

Thanks again,
XK

John Timney (MVP) wrote:
This is exactly what master pages are for and most of the getting started
examples you will find on the web are pretty much representitive of the type
of site you would like to put together.

Regards

John Timney (MVP)

<xk****@gmail.comwrote in message
news:11*********************@75g2000cwc.googlegrou ps.com...
Thinking of creating a website, most of the pages will have a general
toolbar
menu, a content and a footer.
The content will be the only one who's gonna change but the rest
(header,footer)
will remain the same.
I am interested to know your opinions/suggestions in finding an easy
way of doing it.
>
In asp one could have something like this:
let's say we have a page x1_page.asp
>
<!--#include file="top.asp"-->
<!--#include file="x1_content.asp"-->
<!--#include file="footer.asp"-->
>
Put it more simple for x2_page.asp I will only change the content
inclusion:
>
<!--#include file="top.asp"-->
<!--#include file="x2_content.asp"-->
<!--#include file="footer.asp"-->
>
and I don't have to change anything on top and footer.
>
>
In ASP.net 2.0 is any way to accomplish the same, or to create a
wrapper with master pages? Do you have any other ideas? PlaceHolder
maybe one even though it's
not very stright and simple.
>
Thanks,
XK
>
Jul 24 '06 #4

P: n/a
Probably in the future Master Pages in .net will come up with more
flexibility. In my case (still, I might be wrong) I wasn't able to get
to the point to consider them really useful.
I will probably stick with page inheritance / placeholder control.



Chris Lincoln wrote:
XK-

It is possible to have "nested" masterpages, although it is not
literally one masterpage file within another. I dont use this system
really as it seems to be pretty cumbersome.

Check out www.asp.net for tutorial videos (I found them really useful)
on masterpages in general.

Hope the videos help,

Chris

xk****@gmail.com wrote:
John, thanks for answering.
With Master Pages it's exactly what I thought at the beginning but
getting to the code part I got stuck when I had to write the content.

Let me explain, I am sure I am missing something, but I don't know
what. So if I have a master page like this:

<%@ Master Language="VB" CodeFile="MasterPage.master.vb"
Inherits="MasterPage" %>
<!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" <title>Untitled Page</title</head>
<body>
<form id="form1" runat="server">
<table width="100%">
<tr>
<td>
<asp:contentplaceholder id="ContentHeader" runat="server">
</asp:contentplaceholder>
</td>
</tr>
<tr>
<td>
<asp:contentplaceholder id="ContentPlaceHolder" runat="server">
</asp:contentplaceholder>
</td>
</tr>
<tr>
<td>
<asp:contentplaceholder id="ContentFooter" runat="server">
</asp:contentplaceholder>
</td>
</tr>
</table>
</form>
</body>
</html>

I end up having just ONE file for the content page:

<%@ Page Language="VB" MasterPageFile="~/template/MasterPage.master"
AutoEventWireup="false" CodeFile="Default2.aspx.vb"
Inherits="template_Default2" title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentHeader"
Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder"
Runat="Server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="ContentFooter"
Runat="Server">
</asp:Content>
My problem is: I want to have 3 different independent files:
header.aspx, content.aspx and footer.aspx so at the end (after creating
header and footer) I will only write content part.

Otherwise am I going to write Content1 and Content3 everytime when I
create a new page??

Thanks again,
XK

John Timney (MVP) wrote:
This is exactly what master pages are for and most of the getting started
examples you will find on the web are pretty much representitive of the type
of site you would like to put together.
>
Regards
>
John Timney (MVP)
>
>
>
<xk****@gmail.comwrote in message
news:11*********************@75g2000cwc.googlegrou ps.com...
Thinking of creating a website, most of the pages will have a general
toolbar
menu, a content and a footer.
The content will be the only one who's gonna change but the rest
(header,footer)
will remain the same.
I am interested to know your opinions/suggestions in finding an easy
way of doing it.

In asp one could have something like this:
let's say we have a page x1_page.asp

<!--#include file="top.asp"-->
<!--#include file="x1_content.asp"-->
<!--#include file="footer.asp"-->

Put it more simple for x2_page.asp I will only change the content
inclusion:

<!--#include file="top.asp"-->
<!--#include file="x2_content.asp"-->
<!--#include file="footer.asp"-->

and I don't have to change anything on top and footer.


In ASP.net 2.0 is any way to accomplish the same, or to create a
wrapper with master pages? Do you have any other ideas? PlaceHolder
maybe one even though it's
not very stright and simple.

Thanks,
XK
Jul 25 '06 #5

P: n/a

xk****@gmail.com wrote:
John, thanks for answering.
With Master Pages it's exactly what I thought at the beginning but
getting to the code part I got stuck when I had to write the content.

Let me explain, I am sure I am missing something, but I don't know
what. So if I have a master page like this:

<%@ Master Language="VB" CodeFile="MasterPage.master.vb"
Inherits="MasterPage" %>
<!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" <title>Untitled Page</title</head>
<body>
<form id="form1" runat="server">
<table width="100%">
<tr>
<td>
<asp:contentplaceholder id="ContentHeader" runat="server">
</asp:contentplaceholder>
</td>
</tr>
<tr>
<td>
<asp:contentplaceholder id="ContentPlaceHolder" runat="server">
</asp:contentplaceholder>
</td>
</tr>
<tr>
<td>
<asp:contentplaceholder id="ContentFooter" runat="server">
</asp:contentplaceholder>
</td>
</tr>
</table>
</form>
</body>
</html>

I end up having just ONE file for the content page:

<%@ Page Language="VB" MasterPageFile="~/template/MasterPage.master"
AutoEventWireup="false" CodeFile="Default2.aspx.vb"
Inherits="template_Default2" title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentHeader"
Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder"
Runat="Server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="ContentFooter"
Runat="Server">
</asp:Content>
My problem is: I want to have 3 different independent files:
header.aspx, content.aspx and footer.aspx so at the end (after creating
header and footer) I will only write content part.

Otherwise am I going to write Content1 and Content3 everytime when I
create a new page??

Thanks again,
XK
What about using UserControls (ascx) for the header and footer?

Al

Jul 25 '06 #6

P: n/a
You dont need content place holders for your header and footer or seprate
aspx files for these. The header and footer can be placed directly into yor
master template layout with a single (or multiple)contentplaceholder to hold
your changing content. That way, each new page at design time inherits the
master page and you only need to change the contentplaceholders contents in
each aspx. At render time, the header and footer will be appleid for you.

--
Regards

John Timney (MVP)
<xk****@gmail.comwrote in message
news:11**********************@i42g2000cwa.googlegr oups.com...
John, thanks for answering.
With Master Pages it's exactly what I thought at the beginning but
getting to the code part I got stuck when I had to write the content.

Let me explain, I am sure I am missing something, but I don't know
what. So if I have a master page like this:

<%@ Master Language="VB" CodeFile="MasterPage.master.vb"
Inherits="MasterPage" %>
<!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" <title>Untitled Page</title</head>
<body>
<form id="form1" runat="server">
<table width="100%">
<tr>
<td>
<asp:contentplaceholder id="ContentHeader" runat="server">
</asp:contentplaceholder>
</td>
</tr>
<tr>
<td>
<asp:contentplaceholder id="ContentPlaceHolder" runat="server">
</asp:contentplaceholder>
</td>
</tr>
<tr>
<td>
<asp:contentplaceholder id="ContentFooter" runat="server">
</asp:contentplaceholder>
</td>
</tr>
</table>
</form>
</body>
</html>

I end up having just ONE file for the content page:

<%@ Page Language="VB" MasterPageFile="~/template/MasterPage.master"
AutoEventWireup="false" CodeFile="Default2.aspx.vb"
Inherits="template_Default2" title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentHeader"
Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder"
Runat="Server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="ContentFooter"
Runat="Server">
</asp:Content>
My problem is: I want to have 3 different independent files:
header.aspx, content.aspx and footer.aspx so at the end (after creating
header and footer) I will only write content part.

Otherwise am I going to write Content1 and Content3 everytime when I
create a new page??

Thanks again,
XK

John Timney (MVP) wrote:
>This is exactly what master pages are for and most of the getting started
examples you will find on the web are pretty much representitive of the
type
of site you would like to put together.

Regards

John Timney (MVP)

<xk****@gmail.comwrote in message
news:11*********************@75g2000cwc.googlegro ups.com...
Thinking of creating a website, most of the pages will have a general
toolbar
menu, a content and a footer.
The content will be the only one who's gonna change but the rest
(header,footer)
will remain the same.
I am interested to know your opinions/suggestions in finding an easy
way of doing it.

In asp one could have something like this:
let's say we have a page x1_page.asp

<!--#include file="top.asp"-->
<!--#include file="x1_content.asp"-->
<!--#include file="footer.asp"-->

Put it more simple for x2_page.asp I will only change the content
inclusion:

<!--#include file="top.asp"-->
<!--#include file="x2_content.asp"-->
<!--#include file="footer.asp"-->

and I don't have to change anything on top and footer.
In ASP.net 2.0 is any way to accomplish the same, or to create a
wrapper with master pages? Do you have any other ideas? PlaceHolder
maybe one even though it's
not very stright and simple.

Thanks,
XK

Jul 25 '06 #7

P: n/a
In article <11**********************@m79g2000cwm.googlegroups .com>,
xk****@gmail.com writes
>Probably in the future Master Pages in .net will come up with more
flexibility. In my case (still, I might be wrong) I wasn't able to get to the
point to consider them really useful. I will probably stick with page
inheritance / placeholder control.
No, I think you need to think more about how master pages work. Your
example is perfect for them, it's your understanding of how they work
that's flawed (if you'll pardon me for saying so).

Your problem seems to be that you have defined three content place
holders in the master, one for the header, one for the content and one
for the footer. The whole purpose of the master page is that the common
parts of the page, in your case meaning the header and footer, go *in*
the master page itself. You only have a content place holder for parts
of the page that will differ, ie the content.

Create a master page like the one you showed, but replace the
ContentHeader placeholder with the actual header HTML. Similarly,
replace the ContentFooter placeholder with the actual HTML for the
footer. Then, each individual .aspx file only needs a content control
for the actual content. An example follows...

<%@ Master Language="VB" CodeFile="MasterPage.master.vb"
Inherits="MasterPage" %>
<!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" <title>Untitled Page</title</head>
<body>
<form id="form1" runat="server">
<table width="100%">
<tr>
<td>
<!-- header stuff goes here... -->
<h1>Fred's Ferrets Limited</h1>
<h2>The best ferrets on the web!!</h2>
</td>
</tr>
<tr>
<td>
<asp:contentplaceholder id="ContentPlaceHolder" runat="server">
</asp:contentplaceholder>
</td>
</tr>
<tr>
<td>
<!-- footer stuff goes here... -->
<p>Web site and content &copy;1923 by Fred</p>
</td>
</tr>
</table>
</form>
</body>
</html>

I hope this makes it clear. What you are doing is a classic example of
what master pages were designed for, and I would hate to see you reject
them based on a misunderstanding of how they work.

HTH

P.S. You really shouldn't be using tables to layout pages. That is a way
outdated way of doing it and bloats your pages unnecessarily. Use CSS
instead and you'll find your pages are more accessible, lighter and
significantly better seen by the search engines.

--
Alan Silver
(anything added below this line is nothing to do with me)
Aug 1 '06 #8

This discussion thread is closed

Replies have been disabled for this discussion.