File: Article.cs
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace myControls
{
public class Article : CompositeControl
{
private string _title;
private string _author;
private string _contents;
private ITemplate _itemTemplate;
public string Title
{
get { return _title; }
set { _title = value; }
}
public string Author
{
get { return _author; }
set { _author = value; }
}
public string Contents
{
get { return _contents; }
set { _contents = value; }
}
[TemplateContainer(typeof(Article))]
[PersistenceMode(PersistenceMode.InnerProperty)]
public ITemplate ItemTemplate
{
get { return _itemTemplate; }
set { _itemTemplate = value; }
}
protected override void CreateChildControls()
{
_itemTemplate.InstantiateIn(this);
}
}
}
File: Default.aspx
<%@ Page Language="C#" %>
<%@ Register TagPrefix="custom" Namespace="myControls" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
void Page_Load()
{
Article1.Title = "your title";
Article1.Author = "your name";
Article1.Contents = "Blah, blah, blah, blah...";
Article1.DataBind();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Show Article</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<custom:Article
id="Article1"
Runat="server">
<ItemTemplate>
<h1><%# Container.Title %></h1>
<em>By <%# Container.Author %></em>
<br /><br />
<%# Container.Contents %>
</ItemTemplate>
</custom:Article>
</div>
</form>
</body>
</html>