Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Here's

...

a

...

simple

...

example

...

so

...

you

...

can

...

see

...

how

...

the

...

various

...

sub-template

...

pieces

...

fit

...

together.

...

This

...

example

...

generates

...

an

...

HTML

...

file

...

from

...

two

...

templates.

...

First,

...

there's

...

a

...

sub-template

...

that

...

generates

...

an

...

HTML

...

header:

...

<%@ CodeTemplate Language="C#"

...

TargetLanguage="HTML"

...

%>
<%@ Property Name="Title"

...

Type="System.String"

...

Optional="False"

...

Category="Options"

...

Description="Page

...

title."

...

%>
<%@ Property Name="CharSet"

...

Type="System.String"

...

Optional="False"

...

Default="windows-1252"

...

Category="Options"

...

Description="Character

...

set

...

for

...

the

...

page."

...

%>
<%@ Property Name="IncludeMeta"

...

Type="System.Boolean"

...

Default="True"

...

Optional="False"

...

Category="Options"

...

Description="Include

...

meta

...

tags."

...

%>
<html>
<head>
<% if (IncludeMeta) { %>
<meta http-equiv="Content-Type"

...

content="text/html;

...

charset=<%=

...

CharSet

...

%>">

...


<%

...

}

...

%>
<title><%=

...

Title

...

%></title>

...


</head>

...

Next,

...

the

...

main

...

template

...

generates

...

the

...

body

...

of

...

the

...

HTML

...

file.

...

Note

...

that

...

it

...

uses

...

the

...

sub-template

...

to

...

generate

...

the

...

header:

...

<%@ CodeTemplate Language="C#"

...

TargetLanguage="HTML"

...

%>
<%@ Property Name="Title"

...

Type="System.String"

...

Optional="False"

...

Category="Options"

...

Description="Page

...

title."

...

%>
<%@ Property Name="Placeholder"

...

Type="System.String"

...

Optional="True"

...

Category="Options"

...

Description="Main

...

placeholder

...

text."

...

%>
<%@ Register Name="Header"

...

Template="Header.cst"

...

MergeProperties="True"

...

ExcludeProperties="IncludeMeta"

...

%>
<% OutputHeader();

...

%>
<body>
<h1><%= Title %></h1>
<p><%= Placeholder %></p>
</body>
</html>
<script runat="template">

...


public void OutputHeader()

...


{
   Header header = this.Create<Header>();

...


   //

...

include

...

the

...

meta

...

tag
   header.IncludeMeta = true;
   // copy all properties with matching name and type to the sub-template instance
   this.CopyPropertiesTo(header);

...


   //

...

render

...

the

...

sub-template

...

to

...

the

...

current

...

output

...

stream
   header.Render(this.Response);
{color

...

:navy}}

...


</script>

...

When

...

you

...

open

...

the

...

master

...

template,

...

the

...

property

...

sheet

...

shows

...

the

...

Title

...

and

...

Placeholder

...

properties

...

defined

...

in

...

the

...

master

...

template,

...

as

...

well

...

as

...

the

...

CharSet

...

property

...

defined

...

in

...

the

...

sub-template

...

(because

...

of

...

the

...

MergeProperties

...

attribute),

...

but

...

not

...

the

...

IncludeMeta

...

property

...

(because

...

of

...

the

...

ExcludeProperties

...

attribute):

...

The

...

template's

...

output

...

seamlessly

...

merges

...

the

...

output

...

of

...

the

...

sub-template

...

and

...

the

...

output

...

of

...

the

...

main

...

template:

...

Image Added

<html>
<head>
<meta http-equiv="Content-Type"

...

content="text/html;

...

charset=windows-1252">

...


<title>My Web Page</title>

...


</head>

...


<body>
<h1>My Web Page</h1>
<p>Lorem Ipsit</p>
</body>
</html>